Math.round( num * 10) / 10
работает, вот пример ...
var number = 12.3456789;
var rounded = Math.round( number * 10 ) / 10;
// rounded is 12.3
, если вы хотите, чтобы он занимал один десятичный знак, даже если это будет 0, добавьте ...
var fixed = rounded.toFixed(1);
// fixed is always to 1dp
// BUT: returns string!
// to get it back to number format
parseFloat( number.toFixed(2) )
// 12.34
// but that will not retain any trailing zeros
// so, just make sure it is the last step before output,
// and use a number format during calculations!
РЕДАКТИРОВАТЬ: добавить раунд с функцией точности ...
Используя этот принцип, для справки, вот удобная маленькая функция раунда, которая принимает точность ...
function round(value, precision) {
var multiplier = Math.pow(10, precision || 0);
return Math.round(value * multiplier) / multiplier;
}
... using ...
round(12345.6789, 2) // 12345.68
round(12345.6789, 1) // 12345.7
... по умолчанию округляется до ближайшего целого числа (точность 0) ...
round(12345.6789) // 12346
... и может использоватьсяокруглять до ближайших 10 или 100 и т. д. *
round(12345.6789, -1) // 12350
round(12345.6789, -2) // 12300
... и корректно обрабатывать отрицательные числа ...
round(-123.45, 1) // -123.4
round(123.45, 1) // 123.5
... и может комбинироваться с toFixedпоследовательно форматировать как строку ...
round(456.7, 2).toFixed(2) // "456.70"