Javascript 为什么2个parseFloat变量的总和给我的十进制数不正确

Javascript 为什么2个parseFloat变量的总和给我的十进制数不正确,javascript,function,sum,Javascript,Function,Sum,如果我有这个小功能: <script type="text/javascript"> function printFloat(){ var myFloatNumber1 = document.getElementById('floatNumber1'); var myFloatNumber2 = document.getElementById('floatNumber2'); alert(parseFloat(myFloatNumber1.va

如果我有这个小功能:

<script type="text/javascript">

 function printFloat(){
      var myFloatNumber1 = document.getElementById('floatNumber1');
      var myFloatNumber2 = document.getElementById('floatNumber2');
      alert(parseFloat(myFloatNumber1.value) + parseFloat(myFloatNumber2.value))
 }

</script>

<input type="text" id="floatNumber1"></input>
<input type="text" id="floatNumber2"></input>

<input type="button" onclick="printFloat()"/>

函数printFloat(){
var myFloatNumber1=document.getElementById('floatNumber1');
var myFloatNumber2=document.getElementById('floatNumber2');
警报(parseFloat(myFloatNumber1.value)+parseFloat(myFloatNumber2.value))
}
在字段1中输入:221.58 在字段2中输入:2497.74

我希望输入字段中的2个数字的总和是2个数字:2719.32 但结果是一个错误的数字…:2719.3199999997

一轮就可以了,但我不明白为什么代码会在这个数字上这么做。。。 对于其他数字组合,总和是正确的…

请参阅:

来自

为什么我的数字,比如0.1+0.2加起来不等于0.3,然后 相反,我得到了一个奇怪的结果,比如 300000000000000004?

因为在内部,计算机使用 格式(二进制浮点)为 不能准确地表示一个数字 比如0.1、0.2或0.3

当代码被编译或 已解释,您的“0.1”已 四舍五入到该表中最接近的数字 格式,这将导致 舍入误差甚至在 计算发生了

在您的情况下,当您输入的值通过
parseFloat()
转换时,会发生舍入错误

为什么像0.1+0.4这样的其他计算可以正常工作?

在这种情况下,结果(0.5)可以是 准确地表示为 浮点数,它是 中可能存在舍入错误 输入数字以相互抵消 -但这不一定是可靠的(例如,当这两个数字 存储在不同大小的浮动容器中 点表示首先 舍入误差可能无法抵消每个误差 其他)

在其他情况下,如0.1+0.3,则 结果实际上不是0.4,但是 非常接近,因此0.4是最短的 更接近结果的数字 而不是任何其他浮点值 号码。然后显示多种语言 该数字而不是转换 实际结果返回到最接近的值 小数

简单地做以下事情

function printFloat(){
      var myFloatNumber1 = document.getElementById('floatNumber1');
      var myFloatNumber2 = document.getElementById('floatNumber2');
      var total=parseFloat(myFloatNumber1.value) + parseFloat(myFloatNumber2.value);
      alert(total.toFixed(2));
 }