【问题标题】:Calculate parseint with decimal用小数计算 parseint
【发布时间】:2025-12-14 18:40:01
【问题描述】:

我在另一篇文章中发现了这个:

<script language='javascript'>
function AddInputs()
{
var total = 0;
var coll = document.getElementsByClassName('add')
for ( var i = 0; i<coll.length; i++)
{
    var ele = coll[i];
    total += parseInt(ele.value);
}
var Display = document.getElementById('Display');
Display.innerHTML = total;
}
</script>

它有效,但 1.50、1.50 和 1.50 = 3 不准确。我是 JS 的新手(只知道 PHP),但我研究了它并认为它与 parseInt 有关,因为 1.50 不是一个整数。有没有什么我可以替换 parseInt 来计算它,使三个 1.50 实际上等于 4.50?

【问题讨论】:

标签: javascript parsing decimal parseint


【解决方案1】:

尝试使用parseFloat() 而不是parseInt()

也可以使用&lt;script type="text/javascript"&gt; 而不是&lt;script language="javascript"&gt;,这样会更标准和正确

【讨论】:

  • 脚本元素的 type 属性是可选的,默认为 text/javascript,所以大多数情况下根本不使用它。语言属性在 HTML 4 中已弃用,并在 HTML5 中删除。
  • 是的,你是对的。谢谢。脚本语言属性还是错误的。
【解决方案2】:

parseInt 会将任何小数转换为整数,因此 parseInt(1.5) 变为 1。这就是为什么 parseInt(1.5) + parseInt(1.5) + parseInt(1.5) = 3。如果你希望它等于 4.5,那么只需将 parseInt 替换为 parseFloat:

function AddInputs()
{
  var total = 0;
  var coll = document.getElementsByClassName('add')
  for ( var i = 0; i<coll.length; i++)
  {
    var ele = coll[i];
    total += parseFloat(ele.value);
  }
  var Display = document.getElementById('Display');
  Display.innerHTML = total;
}

【讨论】:

    【解决方案3】:

    当您在 1.50 调用 parseInt 时,您将获得该值的整数部分(在本例中为 1)。只需将parseInt 替换为parseFloat 即可获得您期望的值。

    【讨论】:

      【解决方案4】:

      除了parseFloat,您还可以使用Number 将字符串转换为数值。

      document.querySelector('#add').addEventListener('click', addNumber) 
      var total = 0;
      
      function addNumber(e) {
        total += Number(document.querySelector('#plus').value);
        document.querySelector('#result').innerHTML = 'total: '+total.toFixed(2);
      }
      <input id="plus" type="number" placeholder="type a number"/>
      
      <button id="add">add to total</button>
      
      <div id="result"></div>

      【讨论】: