2013-10-29 150 views
7

我对JavaScript函数toFixed(2)有个小问题。使用toFixed舍入十进制数

如果我围绕这个十进制数45.24859,我得到45.25使用此功能。

但是我的问题是,如果我轮了10(它没有小数部分),该函数将返回一个十进制数10.00

我该如何解决这个问题?

我的问题是,如果输入一个没有小数部分的数字,函数应该返回一个非十进制数。

+0

的可能重复的[回合最多以JavaScript 2位小数](http://stackoverflow.com/questions/11832914/round-up-在JavaScript中的2位小数) – Sarath

+0

请注意,这与jQuery丝毫没有关系。 –

回答

7

解决此问题的另一种方法

DEMO

.indexOf()

function roundNumber(num){ 
    return (num.toString().indexOf(".") !== -1) ? num.toFixed(2) : num; 
} 


下面的解决方案与所有浏览器不兼容。

function roundNumber(num){ 
    return (num.toString().contains(".")) ? num.toFixed(2) : num; 
} 

.contains()

+0

两者都不起作用.. – rplg

+0

@rplg现在解决了问题检查。 –

+0

谢谢Tushar Gupta ..现在它工作.. – rplg

6

我们可以核对一下电话号码是小数或不符合本Check if a number has a decimal...

所以相结合,您可以使用此功能

function roundNumber(num){ 
    return num % 1 != 0 ? num.toFixed(2) : num; 
} 

或者我认为更好的选择将是使用

Math.round(num * 100)/100 
+0

谢谢Sarath Saleem ..它的工作原理。 – rplg

+0

您没有处理10.1至10.10的情况 – bjb568

+0

10.1应该是10.10 rt ..? – Sarath