我已经尝试了以下方法:
discval = 2.833423
discval = discval.toFixed(2).toString().replace("." , ",");
discval = parseFloat(discval);
输出结果为2而不是2.83。
有任何想法?
我已经尝试了以下方法:
discval = 2.833423
discval = discval.toFixed(2).toString().replace("." , ",");
discval = parseFloat(discval);
parseFloat("2,83")
将返回2
,因为逗号,
不被识别为小数分隔符,而点.
则是。
如果你想将数字四舍五入到小数点后两位,只需使用parseFloat(discval.toFixed(2))
或Math.round(discval * 100) / 100;
如果你只是为了显示目的而需要这个值,那么保留它作为一个带有逗号的字符串。你也可以使用Number.toLocaleString()
来格式化数字以供显示。但你不能在进一步的计算中使用它。
顺便说一句,.toFixed()
返回一个字符串,所以不需要在其后面使用.toString()
。
从https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseFloat
parseFloat解析其参数(一个字符串),并返回一个浮点数。如果它遇到除 +、-、数字(0-9)、小数点或指数以外的字符,则返回到该点的值,并忽略该字符和所有后续字符。允许前导和尾随空格。
如果第一个字符不能转换为数字,则parseFloat返回NaN。
,
不是预期的字符,因此该数字被截断为逗号。
在JavaScript中无法更改浮点数的表示方式,如果您想用逗号而不是点分隔小数,则需要将您的数字视为字符串处理。