Javascript 计算js中的百分比

Javascript 计算js中的百分比,javascript,math,percentage,Javascript,Math,Percentage,我正在尝试使用javascript创建一个简单的百分比计算器 我在控制台中尝试了一个简单的计算(尝试): 它还给了我: 10.600000000000001 这是怎么回事?括号没有区别,并且不是每个数字都有这种情况。我希望结果是10.6对吗?有人能解释一下吗?这不是特定于浏览器的,它发生在Chrome dev tools和firebug中。不,结果足够正确(即使更改操作顺序可能导致不同的结果),这是IEEE754浮点存储的奇迹之一:数字的存储方式与您看到的不同,这是一些十进制数字和逗号,但作为

我正在尝试使用javascript创建一个简单的百分比计算器

我在控制台中尝试了一个简单的计算(尝试):

它还给了我:

10.600000000000001

这是怎么回事?括号没有区别,并且不是每个数字都有这种情况。我希望结果是
10.6
对吗?有人能解释一下吗?这不是特定于浏览器的,它发生在Chrome dev tools和firebug中。

不,结果足够正确(即使更改操作顺序可能导致不同的结果),这是IEEE754浮点存储的奇迹之一:数字的存储方式与您看到的不同,这是一些十进制数字和逗号,但作为

K * 2 ^ N
其中K和N是有符号整数

当然,并不是所有的数字都能被准确地存储,其他数字只能被接近

我建议你读书

您需要的是在将数字输出给用户时对其进行格式化,例如使用

var string = myNumber.toFixed(1);

双精度。数字在计算机中以二次幂的形式存储,例如
1/2+1/4+1/8…
因此当以小数形式打印时,它们可能不精确

并不是所有的十进制数都有二进制的精确表示,所以当你尝试用浮点进行数学运算时,类似的问题经常发生

转换为二进制后,您的操作如下:

106 = 64 + 32 + 8 + 2 = 1101010
100 = 64 + 32 + 4 = 1100100
1101010 / 1100100 = 1010.10011001100...
然后将其乘以10,或二进制中的101,得到

1010.10011001100... * 101 = 1010.1001100110011001100...
不太的评估为10.6

在您的特定情况下,数字已被截断为1010.10011001或36位。

您可以尝试(106/1000)*100

尝试以下操作:

Var myAnswer = 106 / 100 * 10;
var result = myAnswer.toFixed(1);

这将如何为你工作


祝你快乐

我还想检查一下这类计算的危险性:确实,改变运算顺序会导致不同的近似,在这里,会导致不同的结果,但基本原则是,我们通常不能针对没有格式的结果。
Var myAnswer = 106 / 100 * 10;
var result = myAnswer.toFixed(1);