.toFixed не для .0 *

У меня есть несколько значений:

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

и функция:

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

этот возврат:

1.00
1.10
1.12
1.12 

LIVE

Мне нужен максимальный размер после точки - 2, но только если числа после for!= 0. Поэтому я бы хотел получить:

1
1.1
1.12
1.12 

Как я могу это сделать?

Ответ 1

.toFixed(x) возвращает строку. Просто проанализируйте его как поплавок снова:

return parseFloat(val.toFixed(2));

http://jsfiddle.net/mblase75/y5nEu/1/

Ответ 2

Предполагая, что вы хотите вывести строки

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"

Ответ 3

"Правильный" способ сделать это:

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

Если вы хотите усечь его до двух знаков после запятой (т.е. 1.238 переходит к 1.23 вместо 1.24), используйте floor вместо round.