【问题标题】:Onchange to add 2 digits after decimal pointsOnchange 在小数点后添加 2 位数字
【发布时间】:2013-10-11 11:58:45
【问题描述】:

我有一张正在处理的收据,可以帮我计算。我需要将结果显示为美元价值。

我的 HTML:

<input type="text" name="copy1" id="copy1" size="4" maxlength="10" onchange="calculate(this.value)">
<input type="text" name="copycosts" id="copycosts" size="4" VALUE=""/>

我的 JavaScript:

<script type="text/javascript">
function calculate(){
var copy1value = parseFloat(document.getElementById("copy1").value, 10);
document.getElementById("copycosts").value = copy1value * 0.50;
}
</script>

如何在乘法完成后添加 2 个小数位?例如 13 * 0.50 = 6.5 -- 我希望它说 6.50。

提前致谢。

【问题讨论】:

标签: javascript


【解决方案1】:

使用toFixed()(将数字转换为字符串):

document.getElementById("copycosts").value = (copy1value * 0.50).toFixed(2);

如果你以后需要操作这个号码,你需要使用parseFloat()

var numFromCopycosts = parseFloat(document.getElementById('copycosts').textContent);

参考资料:

【讨论】:

    【解决方案2】:

    使用下面的代码也可以对数字进行四舍五入:

    (Math.round(copy1value * 0.50 * 100) / 100).toFixed(2);
    

    示例

     1.345 will be rounded off to 1.35
    

    添加 jsfiddle:http://jsfiddle.net/FQTqk/297/

    【讨论】:

    • 你为什么在号码上使用parseFloat()?但是 +1 用于处理 toFixed() 提出的舍入问题。
    • 是的。没有parseFloat 也可以工作。由于用户正在为元素赋值,因此不需要parseFloat()
    【解决方案3】:

    您可以使用 toFixed:

    var val = copy1Value.toFixed(2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 2022-01-12
      • 2015-01-02
      • 1970-01-01
      相关资源
      最近更新 更多