Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当小数由于精度而被截断时,如何使用parseFloat进行四舍五入?_Javascript - Fatal编程技术网

Javascript 当小数由于精度而被截断时,如何使用parseFloat进行四舍五入?

Javascript 当小数由于精度而被截断时,如何使用parseFloat进行四舍五入?,javascript,Javascript,例如: parseFloat(2099985998.998995491692253777) // Actual -> 2099985998.9989955 // Desired -> 2099985998.9989954 我只想截断小数而不是四舍五入。假设您正在解析字符串值,那么先截断源字符串怎么样 const quantityDecimals = 7 source = source.substr(0,source.indexOf('.') + quantityDecimals)

例如:

parseFloat(2099985998.998995491692253777)
// Actual -> 2099985998.9989955
// Desired -> 2099985998.9989954

我只想截断小数而不是四舍五入。

假设您正在解析字符串值,那么先截断源字符串怎么样

const quantityDecimals = 7
source = source.substr(0,source.indexOf('.') + quantityDecimals)
parseFloat(source)

这实际上与
parseFloat
没有任何关系
2099985998.998995491692253777
的精度太高,如果不进行截断,就无法放入数值类型中。这与
parseFloat
无关,它为您提供了最大的精度。它将截断数字以适合数字类型。它只会根据需要进行适当的截断。它不是在做取整运算。@Amy,我明白了。我只是在控制台上再次测试了一下。当精度太大时,如何让javascript截断而不是舍入?如果将2099985998.998995491692253777放入控制台,则会将其四舍五入至2099985998.9989955。如果它被截断,那么它将是2099985998。9989954@DylanKerler它正在截断。您可以通过手动将数字转换为二进制,然后进行截断,再转换回十进制来确认这一点。它似乎舍入最后一位的原因是截断是以二进制而不是十进制进行的。如果您想完全避免这种影响,您必须从数字的字符串表示开始,然后自己执行一些字符串操作来截断它。