当前位置: 首页 > 面试题库 >

处理JavaScript中的float精度[重复]

常永怡
2023-03-14
问题内容

y在JavaScript中有大量的数值。我想通过将它们四舍五入到最接近的倍数x并将它们转换为字符串来对它们进行分组。

如何解决烦人的浮点精度?

例如:

0.2 + 0.4 = 0.6000000000000001

我尝试了两件事:

>>> y = 1.23456789 
>>> x = 0.2 
>>> parseInt(Math.round(Math.floor(y/x))) * x; 
1.2000000000000002

和:

>>> y = 1.23456789 
>>> x = 0.2 
>>> y - (y % x)
1.2000000000000002

问题答案:

这篇文章:如何处理JavaScript中的浮点数精度?
您有几种选择:

  • 对小数使用特殊的数据类型,例如decimal.js
  • 将结果格式化为固定数量的有效数字,如下所示: (Math.floor(y/x) * x).toFixed(2)
  • 将所有数字转换为整数


 类似资料:
  • 我尝试了两件事: 和:

  • 问题内容: 我有以下虚拟测试脚本: 这将打印结果,而仅打印结果(如果使用计算器)。据我了解,这是由于浮点乘法精度的错误。 有没有人有一个好的解决方案,这样在这种情况下我可以获得正确的结果?我知道还有类似的函数,或者四舍五入是另一种可能性,但是我真的想在不进行任何四舍五入的情况下打印出完整的数字。只是想知道你们中的一个人是否有一些不错的,优雅的解决方案。 当然,否则我将四舍五入到大约10位数字。 问

  • 在阅读了这个问题和这个msdn博客之后,我尝试了几个例子来测试这个: 是的,预期输出为假。因此,我尝试将表达式的两侧强制转换为double和float,以查看是否可以得到不同的结果: 第一行输出但第二行输出,为什么会发生这种情况? 此外 即使没有铸造,上面的两行都给出了。和... 这一行输出。如果它们都被浮点数减去,如何从减去18.01中减去8的差异? 我试图通读博客并提出问题,但似乎在其他地方找

  • 首先,这个函数是专门用于处理的,还是默认存在于java中? 当我在处理下面这行代码时, 它输出 那么,为什么浮动()函数对\n字符很好,但对p不起作用?它们不是都是字符吗?我知道\n是特殊的东西,但在这种情况下,它有区别吗? 编辑:我用“p”替换了“K”,因为答案中有一些警告。

  • 问题内容: 我对在Go中精确减去2个float的方法感兴趣。 我尝试使用该 库,但无法获得准确的结果。 我使用Javascript中的big.js库解决了此问题。Go算法是否有类似的库/方法? https://play.golang.org/p/vomAr87Xln 问题答案: 包装大 导入“数学/大” func(* Float)字符串 字符串格式x类似于x.Text(’g’,10)。(必须显式调

  • 关于浮点数学。2017年是否有可能重新设计计算机/标准,以便 --int(x) --十进制(固定位置,无轨迹x.x或x.xxn)((同时我在下面的答案中创建了一个hack)) --浮子(这里允许小径,就像浮子的深奥本质x. n?) 下面是我写的原文和一段视频,介绍了浮点CppCon 2015: 我正在编写一个迭代器,它将从0.0循环到3.0。 但是当我做=0.2时,结果不是预期的0.2,然后是0.