0

我有一个表格,可以计算输入金额的总和。我想知道如何使输出从以下内容开始:

97.231345

97.23

我正在尝试使用美国货币格式但没有美元符号,如果可能的话,我可以四舍五入到最接近的百分之一。对于我缺乏知识,我深表歉意,并提前感谢您的所有帮助。我真的很感谢你的时间,谢谢。

<script type="text/javascript">
  function addition(){
    a=Number(document.calculator.number1.value);
    b=Number(document.calculator.number2.value);
    c=a+b;
    document.calculator.total.value=c;
  }
</script>
<br/>
<form name="calculator">
  Enter Product Price(s) HERE
  Product A: $ <input name="number1" size="9" type="text"><br>
  Product B: $ <input name="number2" size="9" type="text"><br>
  TOTAL: $<input name="total" size="14" type="text"><br>
  <input onClick="javascript:addition();" value="UPDATE" type="button">
</form>
4

2 回答 2

1

正确的解决方案是使用toFixed,如

c=(a+b).toFixed(2);
于 2012-11-16T10:30:39.450 回答
0
function nearestCent(amt) {
    return Math.round(amt*100)/100;
}

function displayNearestCent(amt) {
    var dollars = Math.floor(amt);
    return dollars + "." + Math.round((amt-dollars)*100);
}

c = nearestCent(a + b);
document.calculator.total.value = displayNearestCent(c);

有两个问题需要注意。第一个是您已经看到的,将金额存储为浮点数会导致 0.33333 类型的问题。第二个是即使你四舍五入到美分,你的分数的 javascript 的二进制表示对于每一个美分数都不会是精确的,所以你也需要四舍五入来生成显示字符串。

真正的解决方案是使用整数美分:

function nearestCents(amt) {
    return Math.round(amt * 100);
}

function displayCentsInDollars(cents) {
    var dollars = Math.floor(cents/100);
    return dollars + "." + Math.round(cents - 100*dollars);
}

这样,一旦您将金额转换为美分,您就只是使用整数美分。

于 2012-11-16T10:29:08.423 回答