Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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意外结果_Javascript - Fatal编程技术网

Javascript意外结果

Javascript意外结果,javascript,Javascript,我正在用java脚本进行计算,但由于十进制数的精度,我面临一个问题。 我不能公布准确的计算结果,但这是我正在做的,导致了一个意想不到的结果 当我写作时: 警报(100.01-36.01)//结果是64 但当我写作时: 警报(100.01-37.01)//结果为63.00000000000001 38.01就这样继续下去……以此类推。 有谁能帮我解释一下为什么这会表现出如此出人意料的行为。 我陷入了一个计算中 提前感谢。试试这个: <script type="text/javascript"

我正在用java脚本进行计算,但由于十进制数的精度,我面临一个问题。 我不能公布准确的计算结果,但这是我正在做的,导致了一个意想不到的结果

当我写作时:
警报(100.01-36.01)//结果是64

但当我写作时:
警报(100.01-37.01)//结果为63.00000000000001

38.01就这样继续下去……以此类推。 有谁能帮我解释一下为什么这会表现出如此出人意料的行为。 我陷入了一个计算中

提前感谢。

试试这个:

<script type="text/javascript"> var n1 = parseFloat(100.01); var n2 = parseFloat(37.01); var res = (n1-n2) alert(res.toFixed(2)); </script> var n1=浮点数(100.01); var n2=浮点数(37.01); 变量res=(n1-n2) 警报(第2条);
如果您不将数字声明为数字,js将自动将其作为字符串使用,如果字符串不仅仅由数字使用


parseFloat(123.45)将其设置为十进制数。

机器没有无限精度,因此在比较浮点值时必须始终小心,64是机器的一个特殊数字,它是2的幂,因此可以很好地表示它。这可能会帮助您这一点已经被询问了至少一百万次了,请在发布问题之前使用搜索。我检查过了,它实际上被问了十亿次。