gpt4 book ai didi

javascript - 数字和 toFixed ,toPrecision 在 Javascript 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:18 27 4
gpt4 key购买 nike

关于 1.01+1.02 的著名问题是 2.0300000000000002

解决方法之一是使用 toFixed :例如

(1.01+1.02).toFixed(2) --->"2.03"

但是我看到了使用 toPrecision 的解决方案

parseFloat((1.01+1.02).toPrecision(10))-->"2.03"

但是让我们看看 n 中的

  • toFixed(n)

  • toPrecision(n)

我怎么知道 n 是什么?

  0.xxxxxxxxxxx
+
0.yyyyyyyyyyyyy
---------------------
0.zzzzzzzzzzzzzzzzzzzzzzzzz
^
|
-----??????------

添加的每个数字可以有不同的小数位...

例如:

1.0002+1.01+1.03333--> 3.0435300000000005

我如何计算这里的 n?这个(特定)问题的最佳做法是什么?

最佳答案

对于这种情况下的加法,我会检查每个操作数中的小数位数。

在最简单的情况下,小数位数最多的操作数的小数位数就是n的值。

一旦你有了这个,使用你喜欢的任何方法来 chop 你的值(value)。然后去掉尾随零。

在 1.06 + 1.04 等情况下,您可能会遇到尾随零,第一步会将您带到 1.10,然后 chop 零将得到 1.1

在您的最后一个示例中,1.0002+1.01+1.03333 的最大小数位数是 5,因此您剩下的是 3.04353,并且没有要 chop 的尾随零。

关于javascript - 数字和 toFixed ,toPrecision 在 Javascript 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621558/

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