2016-05-23 8 views
0

量を乗算して結果を表示するシンプルなjavascriptを作成しました。しかし、結果を2小数点以下に制限したい。 toFixedを使ってみましたが、うまくいかないようです。逓倍量の結果を2小数点以下に制限します

誰でもこの作業を行う方法を知っていますか?


function MultiplyTheAmount() { 
 
\t var multiplier = 0.75; 
 
\t var roundedMultiplier = multiplier.toFixed(2); 
 
\t document.getElementById('multiplyResult').innerHTML = document.getElementById('multiplyAmount').innerHTML * roundedMultiplier; 
 
}; 
 
MultiplyTheAmount();
<ul style="list-style:none;"> 
 
    <li>Amount:</li> 
 
    <li id="multiplyAmount">119.99</li> 
 
    <li><br/></li> 
 
    <li>Multiply by:</li> 
 
    <li>0.75</li> 
 
    <li><br/></li> 
 
    <li>Result:</li> 
 
    <li id="multiplyResult"></li> 
 
</ul>

答えて

1

は拡大を排除するために最終的な結果にtoFixed方法を適用しますfloating point inaccuracyあなたが見ている:

質問に関連していない

function MultiplyTheAmount() { 
 
    var multiplier = 0.75; 
 
    var roundedMultiplier = multiplier.toFixed(2); 
 
    document.getElementById('multiplyResult').textContent = ( 
 
     +document.getElementById('multiplyAmount').textContent * roundedMultiplier 
 
    ).toFixed(2); 
 
}; 
 
MultiplyTheAmount();
<ul style="list-style:none;"> 
 
    <li>Amount:</li> 
 
    <li id="multiplyAmount">119.99</li> 
 
    <li><br/></li> 
 
    <li>Multiply by:</li> 
 
    <li>0.75</li> 
 
    <li><br/></li> 
 
    <li>Result:</li> 
 
    <li id="multiplyResult"></li> 
 
</ul>

が、HTMLコンテンツを扱っていないとき、私は代わりにinnerHTMLtextContentの使用を示唆します。

+0

また、 'document.getElementById( 'multiplyResult')'を変数に格納して2回アクセスしないようにすることもお勧めします。 – andlrc

+1

@andlrcの場合、その要素は一度だけアクセスされます。もう1つは 'multiplyResult'ではなく' multiplyAmount'です。 – trincot

+0

@trincotという広範な回答をいただきありがとうございます。あなたのソリューションはうまくいきます:)私はinnerHTMLの代わりにtextContentも使用しています。 – Macchiato

2

あなたは、小数点以下2桁を持っている最終的な結果を制限する必要があります。

(document.getElementById('multiplyAmount').innerHTML * roundedMultiplier).toFixed(2); 
+0

私は間違った場所にtoFixedしていましたが、これははるかに良い、ありがとう! :) – Macchiato

関連する問題