0

我正在尝试将 2 个字段的输出值设置为 2 位小数。
我试过这样做:.toFixed(2)但它对我不起作用。我试过这样做:

calculate = function () {
      var total = document.getElementById('totaal').value;
      var btw = document.getElementById('percentage').value;
      document.getElementById('btw').value = parseInt(total.toFixed(2)) * parseInt(btw.toFixed(2)) / 100;
  }

如果该字段以带有 2 个小数的数字结尾(例如:3,45),则它可以正常工作。
但如果它以 0 结尾,则不会显示 0。

我认为这不应该是这样的交易,但我现在只是尝试了半天......

提前致谢!

4

5 回答 5

2

当您使用时,parseInt()您会删除小数点后的数字,请尝试这样做:

document.getElementById('btw').value = (parseFloat(total) * parseFloat(btw) / 100).toFixed(2);

parseFloat将输入中的字符串(这是必要的,因为输入值是字符串)转换为浮点数,然后除以 100 并调用.toFixed(2)结果。

于 2017-08-26T20:30:22.103 回答
1

您可以使用一元加+号将字符串转换为数字。

document.getElementById('btw').value = (+total * +btw / 100).toFixed(2);

如果您使用parseInt,您可能会失去精度。

于 2017-08-26T20:32:43.667 回答
0

确保您正在调用toFixed整个操作,即document.getElementById("btw").value = (parseInt(total) * parseInt(btw) / 100).toFixed(2);

尝试运行以下代码段:

calculate = function() {
  var total = document.getElementById("total").value;
  var btw = document.getElementById("percentage").value;
  if (total && btw) {
    document.getElementById("btw").value = 
      (parseInt(total) * parseInt(btw) / 100).toFixed(2);
  }
};
<input onchange="calculate()" placeholder='total' type="decimal" id="total">
<input onchange="calculate()" placeholder='percentage' type="decimal" id="percentage">
<input type="decimal" placeholder='result' id="btw">

于 2017-08-26T20:41:50.700 回答
0

您可以使用parseFloat 来实现这一点

var total =65633;
var btw  = 12;

console.log(parseFloat((total* btw)/100).toFixed(2))

于 2017-08-26T20:33:41.370 回答
0

您的问题是您toFixed()在字符串上运行,并且toFixed()仅适用于数字。

但是,您可以这样做:

document.getElementById('btw').value = 
        (parseInt(total) * parseInt(btw) / 100).toFixed(2)

这需要两个数字并进行所有数学运算。然后它将其转换为带有两个尾随小数的字符串

在这里查看我的小提琴:https ://jsfiddle.net/6vtrjmax/

于 2017-08-26T20:36:33.183 回答