gpt4 book ai didi

javascript - 如何处理 JavaScript 中的 float 精度?

转载 作者:IT老高 更新时间:2023-10-28 11:14:48 31 4
gpt4 key购买 nike

我有以下虚拟测试脚本:

function test() {
var x = 0.1 * 0.2;
document.write(x);
}
test();

这将打印结果 0.020000000000000004 而它应该只打印 0.02 (如果您使用计算器)。据我了解,这是由于浮点乘法精度的错误造成的。

有没有人有一个好的解决方案,以便在这种情况下我得到正确的结果 0.02?我知道有像 toFixed 这样的函数,或者舍入是另一种可能性,但我真的希望打印整数而不进行任何切割和舍入。只是想知道你们中的某个人是否有一些不错的、优雅的解决方案。

当然,否则我会四舍五入到 10 位左右。

最佳答案

来自Floating-Point Guide :

What can I do to avoid this problem?

That depends on what kind ofcalculations you’re doing.

  • If you really need your results to add up exactly, especially when youwork with money: use a special decimaldatatype.
  • If you just don’t want to see all those extra decimal places: simplyformat your result rounded to a fixednumber of decimal places whendisplaying it.
  • If you have no decimal datatype available, an alternative is to workwith integers, e.g. do moneycalculations entirely in cents. Butthis is more work and has somedrawbacks.

请注意,第一点仅适用于您确实需要特定精确的十进制 行为。大多数人不需要这个,他们只是对他们的程序不能正确处理像 1/10 这样的数字感到恼火,却没有意识到如果出现 1/3,他们甚至不会因同样的错误而眨眼。

如果第一点确实适用于您,请使用 BigDecimal for JavaScript , 这一点都不优雅,但实际上解决了问题,而不是提供了一个不完美的解决方法。

关于javascript - 如何处理 JavaScript 中的 float 精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458633/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com