2013-07-09 14 views
8

Mam kilka wartości:nie .toFixed dla .0 *

var one = 1.0000 
var two = 1.1000 
var three = 1.1200 
var four = 1.1230 

i funkcji:

function tofixed(val) 
{ 
    return val.toFixed(2); 
} 

ten zwrot:

1.00 
1.10 
1.12 
1.12 

LIVE

chcę maksymalny rozmiar po kropce - 2, ale tylko jeśli n ! Umbry po za = 0. więc chciałbym otrzymać:

1 
1.1 
1.12 
1.12 

Jak mogę to zrobić?

+3

+ val.toFixed (2); daje ci prawdziwy numer, posiekany. – dandavis

Odpowiedz

7

Zakładając chcesz String wyjść

function myFixed(x, d) { 
    if (!d) return x.toFixed(d); // don't go wrong if no decimal 
    return x.toFixed(d).replace(/\.?0+$/, ''); 
} 
myFixed(1.0000, 2); // "1" 
myFixed(1.1000, 2); // "1.1" 
myFixed(1.1200, 2); // "1.12" 
myFixed(1.1230, 2); // "1.12" 
+0

To nie zadziała. -1 – Doorknob

+1

@Doorknob możesz podać przykład, w którym to nie działa? –

+0

'myFixed (1200, 2); // 12' – Doorknob

5

"poprawny" sposób, aby zrobić to w następujący sposób:

return Math.round(num*100)/100; 

Jeśli chcesz skrócić go do dwóch miejsc po przecinku (tj. 1.238 idzie do 1.23 zamiast 1.24), użyj floor zamiast round.

Powiązane problemy