我有一些简单的javascript,我想用它来确定是否需要对数字进行舍入。
示例:用户输入1.2346并将数字四舍五入为1.235,并且应向用户显示一条消息,通知他们该数字已四舍五入。 舍入数字不是问题,但向用户显示错误消息。我需要找到小数点后的位数。
我使用以下代码从字符串中检索小数位。然后我计算变量的长度以获得小数位:
var dp = field_value - Math.floor(field_value);
但是,当我对此进行测试时,我输入1.23
作为field_value
的值。当我检查字段值的值时,它确实是1.23
。当我检查Math.floor(field_value)的值时,它确实是1
。但后来我检查了dp的值,结果证明是0.22999999999999998
为什么这个减法不能按照预期的方式工作?
答案 0 :(得分:1)
答案 1 :(得分:0)
尝试使用浮点数的表示进行过于精确和具体的操作总是会遇到棘手的情况。正如其他人所指出的,这是IEEE-754浮点标准的特性。除了将其视为字符串并尝试分析数字之外,您还可以将其确定性地舍入到您想要的格式,执行以下操作:
function roundFloat(num, decimalPlaces) {
multiplier = Math.pow(10, decimalPlaces);
return Math.round(num * multiplier) / multiplier;
}