0

我有一些变量,它们都包含数字,它们都是 parseFloat 的。

最后,所有的 parseFloat 都被计算到一个变量中,从那个变量中,我需要一些函数,将特定的数字设置为每五十(50)个。所以如果特定的数字是 163,则需要解决到150.如果是243,需要结算到200..

这实际上是有效的,但是有一个问题。浏览器冻结并告诉脚本正在循环?我想这是因为变量 betaTotal 包含一个逗号数字??像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 回答