Javascript意外结果
我正在用java脚本进行计算,但由于十进制数的精度,我面临一个问题。 我不能公布准确的计算结果,但这是我正在做的,导致了一个意想不到的结果 当我写作时:Javascript意外结果,javascript,Javascript,我正在用java脚本进行计算,但由于十进制数的精度,我面临一个问题。 我不能公布准确的计算结果,但这是我正在做的,导致了一个意想不到的结果 当我写作时: 警报(100.01-36.01)//结果是64 但当我写作时: 警报(100.01-37.01)//结果为63.00000000000001 38.01就这样继续下去……以此类推。 有谁能帮我解释一下为什么这会表现出如此出人意料的行为。 我陷入了一个计算中 提前感谢。试试这个: <script type="text/javascript"
警报(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的幂,因此可以很好地表示它。这可能会帮助您这一点已经被询问了至少一百万次了,请在发布问题之前使用搜索。我检查过了,它实际上被问了十亿次。