2013-10-29 28 views
7

Ho un piccolo problema con la funzione JavaScript toFixed(2).Arrotondamento dei numeri decimali utilizzando toxxed

Se si arrotonda questo numero decimale 45.24859, ottengo 45.25 utilizzando questa funzione.

Ma il mio problema è che se tondo 10 (non ha alcuna parte decimale), la funzione restituirà un numero decimale 10.00.

Come posso risolvere questo problema?

Il mio problema è, se si immette un numero senza una parte decimale, la funzione dovrebbe restituire un numero non decimale.

+0

possibile duplicato del [rotonda fino a 2 cifre decimali in javascript] (http://stackoverflow.com/questions/11832914/round-up- to-2-decimal-places-in-javascript) – Sarath

+0

si prega di notare che questo non ha NIENTE da fare con jQuery nel minimo. –

risposta

7

Un altro modo per risolvere questo

DEMO

.indexOf()

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


Sotto soluzione non è compatibile con tutti i browser.

o

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

.contains()

+0

entrambi non funzionano. – rplg

+0

@rplg Risolto il problema con il controllo ora. –

+0

Grazie Tushar Gupta..ora funziona .. – rplg

6

Siamo in grado di verificare il numero è decimale o meno con questo Check if a number has a decimal...

Così combinando che è possibile utilizzare questa funzione

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

O penso soluzione migliore sarà quella di utilizzare

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

Grazie a Sarath Saleem ... Funziona. – rplg

+0

Non hai gestito il caso da 10.1 a 10.10 – bjb568

+0

10.1 dovrebbe essere 10.10 rt ..? – Sarath