0

入力した金額の合計を計算するフォームがあります。次のようなものから出力を行う方法を知りたかったのです。

97.231345

97.23

私は米国通貨の書式設定を使用しようとしていますが、ドル記号を使用せずに、可能であれば最も近い 100 分の 1 に丸めることができます。知識不足で申し訳ありませんが、よろしくお願いいたします。お時間をいただき、誠にありがとうございます。

<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);

注意すべき2つの問題があります。1つ目は、金額をフロートとして保存すると0.33333タイプの問題が発生する可能性があることを確認したものです。2つ目は、セントに四捨五入しても、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 に答える