一个Javascript添加表达式

时间:2017-01-18 03:51:41

标签: javascript

我刚开始学习Javascript。我对下面的脚本及其HTML输出感到困惑。

脚本:               

<h1>JavaScript Variables</h1>

<p id="demo"></p>

<script>
var x = 3.14;
document.getElementById("demo").innerHTML = x + 1;
</script>

</body>
</html>

输出: JavaScript变量

4.140000000000001

我想知道为什么我会得到4.140000000000001而不是4.14?如果我尝试x + 2,x + 3,x + 4,输出也是不正确的。如果将x添加到其他数字(如10),这将是正确的。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

计算机硬件不像我们那样计算实数。这两种方式都不是“正确的”,因为有些数字需要无限扩展,而我们没有时间处理无限多的数字。例如,当我们计算1/3时,我们得到0.3333 ....我们习惯于截断这个扩展的不准确性并将其视为“正确”。当然这不完全正确。

计算机硬件不像我们那样使用基本10计算。它使用基础2计算的形式。基数2的无限扩展是不同的。例如1/10(基数10)是0.000110001100011 ....(基数2)。

两个系统都有不准确之处,因为我们必须截断无限小数扩展。不准确之处是不同的。计算机硬件通过保留大量小数位来补偿基数2中更频繁的无限扩展。

需要注意的是,你总能得到答案不符合预期的情况。

如果您的应用程序无法接受这些不准确性(并且某些会计应用程序无法接受),那么您需要在软件中模拟基本10算法。有这个包。我对他们没有经验。为了让你从这里开始是一个:

https://github.com/MikeMcl/bignumber.js/

答案 1 :(得分:-1)

仅使用数字3.14,即PI的值(在javascript MATH中预定义,十进制后15位数)。检查一下 http://www.w3schools.com/jsref/jsref_pi.asp

您可以通过toFixed()函数设置小数点后的数字限制。