2014-02-06 73 views
-6

我有一个JavaScript中的函数来循环数字。JavaScript的圆形函数不起作用

function roundNumber(num){ 
    var result = Math.round(num*100)/100; 
    return result; 
} 

alert(roundNumber(5334.5)); 

//I still get 5334.5 when normally I should get 5335 

我错过了什么?

演示:http://jsfiddle.net/HwvX2/

+0

你将结果除以100.你为什么期待它是一个整数? – Bugs

+0

你的函数是截断到小数点后两位的一种方法,但你期望它能够四舍五入到最接近的整数。这里有一个逻辑错误的位。 – Paddy

+0

您似乎正在使用来自http://stackoverflow.com/questions/11832914/round-up-to-2-decimal-places-in-javascript的代码,它舍入到小数点后两位 – Ruskin

回答

5

尝试使用:

function roundNumber(num){ 
    var result = Math.round(num); 
    return result; 
} 

alert(roundNumber(5334.5)); 
+1

直接使用'Math.round()'对我来说更有意义......只是说。 – Simone

+0

谢谢,这工作正常! –

+0

Agry,但是:可能它只是功能的一部分... –

1

使用权括号:

var result = Math.round(num); 

演示:http://jsbin.com/tibo/1/

+2

为什么你乘以'100'然后除以'100'? –

+1

@DaniloValente:OP的原始问题..我只是复制相同的..需要咖啡.. arg .. :) –

3

试试这个

alert(Math.round(5334.5)); 

Demo

0

应该Math.round((num*100)/100)

+0

(num * 100)/ 100 = num – Bugs

2

的答案是正确的。你实际上四舍五入到小数点后两位。应该是:

Math.round(num); 
0

只需修改您的代码与这条线::

 var result = Math.round(num); 
2

我认为这是要覆盖默认行为这样的一个时期,Math.round是一个伟大的方法但有时轮子不够圆。以下是你可以做的:

Math.round = function (x) { 
     if (parseInt((x + 0.5).toString().split(".")[0], 10) > parseInt(x.toString().split(".")[0], 10)) { 
       return parseInt((x + 1).toString().split(".")[0], 10); 
     } else { 
       return parseInt(x.toString().split(".")[0], 10); 
     } 
};