0

a結果が整数になるまで切り上げまたは切り下げたい。

a = 1.2
b = 1.5
a*b*16 = 28.8

ただし、基準がaあります。小数点以下3桁以下に固定する必要があります。したがって、上記の例がこれに出力される計算が必要です。

a = 1.25
b = 1.5
a*b*16 = 30

私は実際にSassで何かをコーディングしていますが、JavaScriptで記述されているかどうかにかかわらず、誰かが私を正しい方向に向けることができれば。この紛らわしい計算を定式化するのに助けが必要です!

基準: 小数点以下3桁以下であるa必要があります。 整数である必要があります。the result

これも可能ですか?

4

2 に答える 2

2

使用する方法に関係なく、変数の精度を制限すると、結果が整数になることを保証できません。

例:

  • b= 3の場合、 a= 30 /(16×3)= 30/48 = 5/8 = 0.625
    この場合、正確には0.625×3×16=30です。

  • b= 7の場合、 a= 30 /(16×7)= 30/112 = 15/56 = 0.267857 ...
    丸めaの結果は0.268になり、0.268×7×16 = 30.016になります。これは、30に最も近い値です。言い換えれば、基準を満たす値はなくa、0.268が最善の方法です。

ただし、最良の値を求めて、結果を可能な限り整数に近づけることができます

目的の変数の方程式を解いてから、適切な小数点以下の桁数に丸めます。

a = 30. / (16. * b); // true value
a = ((int) (1000 * a + 0.5)) / 1000; // round to 3 decimals

最新の言語のほとんどは、丸めを行うためのライブラリ関数を提供します。それがどのように機能するかを理解できるように、私はそれを「手書き」で書きました。

于 2012-05-19T21:13:52.097 に答える
0
i = Math.round(a*b*16);
a = i/b/16;
a = a.toFixed(2);
b = i/16/a;

テスト om i==a*b*16

于 2012-05-19T21:20:14.187 に答える