0

すべて数値を含むいくつかの変数があり、それらはすべて parseFloat のものです。

最終的に、すべての parseFloat は 1 つの変数に計算されます。その変数から、特定の数値を 50(50) ごとに解決する関数が必要です。したがって、特定の数値が 163 の場合は、解決する必要があります。 150 まで。243 の場合は 200 まで調整する必要があります。

これは実際には機能していますが、問題があります..ブラウザがフリーズし、スクリプトがループしていることを伝えます?? 変数 betalTotal にコンマ番号が含まれているためだと思います?? 6.5のように?

これは私がこれまでに持っているものです:

iAlt = 0;

iAlt = maxregning - pakkerTotal - betalTotal;

//parseFloat(iAlt);
/* - THIS AINT WORKING 
if(betalTotal == 6.5){
    betalTotal.val(betalTotal.val().replace('6.5', '6,5'))
}*/

while(iAlt % 50 != 0){
    iAlt--;
}
$('#sk').text(iAlt);

誰かがこれに対する解決策を知っていますか?

4

3 に答える 3

3

値を 50 で割り、四捨五入して、50 を掛けます。

iAlt = Math.floor(iAlt / 50) * 50;

(ループの前に値を丸めた場合、元の方法も機能しますが、この方法ではループはまったく必要ありません。)

これは常に 243 から 200 に切り捨てられます。最も近い値 (243 から 250) に丸めたい場合は、Math.round代わりに を使用します。

于 2011-11-14T07:56:50.113 に答える
1

iAlt % 50 は、Float では機能しません。

parseFloat("30.3")%2 =     0.3000000000000007

Round 、 ceil 、 floor を使用できます

于 2011-11-14T07:57:48.283 に答える
1

Math.floorの代わりに で計算する必要があります。Math.roundここにテスト ページがあります。

iAlt = Math.floor(iAlt / 50) * 50
于 2011-11-14T08:09:25.697 に答える