16

変数を使用して数値を表す JavaScript で簡単な計算を行っています。これが私のコードの例です:

var ones = 0;
var fives = 0;
function results (){
    _fives = (fives * 5);
    var res = (_fives + ones);
    document.innerHTML = res;
}

これは完全なコードではありませんが、基本的には、1 セント硬貨から 100 ドル札までの紙幣と硬貨の金額をユーザーに入力させています。このコードは、請求額を請求額に掛けます。これは問題ありません...何らかの理由で、私の結果の一部で、1.899999999997のような小数が表示されますが、これがどのように起こっているのかわかりません。

これを変更して、小数点以下 100 分の 1 に丸める方法はありますか?

たとえば、1.89999999997 を表示する代わりに、実際には 1.90 を表示するだけで、これは大きな問題ではありません。これは個人的なことで、自分で丸めることができますが、将来の参考のためにこれを行う方法を学ぶとよいでしょう.

4

7 に答える 7

25

更新: MDN には、浮動小数点の不正確さを回避する 10 進数の丸めの優れた例があります。OPに基づいて、常に切り上げるようにメソッドを変更できます。


元の(やや間違った)回答

//to round to n decimal places
function round(num, places) {
    var multiplier = Math.pow(10, places);
    return Math.round(num * multiplier) / multiplier;
}

編集:質問を完全に読んでいませんでした。通貨について話しているので、おそらく切り上げたいと思います。

//to round up to two decimal places
function money_round(num) {
    return Math.ceil(num * 100) / 100;
}
于 2013-02-19T22:22:41.300 に答える
0

これはおそらく 1 日遅れて 1 ドル足りないことはわかっていますが、私はこのようなものも探していました。この質問により、Math.round 機能を調べることになりました。

私はこれを思いつき、与えられた値を最も近い5番目、100番目に丸めます。したがって、0.07 は 0.05 になります。23.45 は 23.45 になります。1006.32 は 1006.30 になります。

<script>
function rounder() {
var exampleInput = $("#inputId").val();
$("#output").html(((Math.round(((Math.round(exampleInput*100)/5)*5)/5)*5)/100).toFixed(2));
}
</script>

初心者なので、このコードをより効率的にする方法があると確信しています。

于 2015-08-20T12:56:02.587 に答える