2013-10-29 83 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