假设我有一个值15.7784514,我想把它显示为15.77,没有舍入。
var num = parseFloat(15.7784514);
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(2)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));
结果:
15.8
15.78
15.778
15.7784514000
如何显示15.77?
谢谢,Martin Varmus
function floorFigure(figure, decimals){
if (!decimals) decimals = 2;
var d = Math.pow(10,decimals);
return ((figure*d)/d).toFixed(decimals);
};
floorFigure(123.5999) => "123.59"
floorFigure(123.5999, 3) => "123.599"
我做了一个简单的更新,我得到了适当的舍入。更新如下
return ((figure*d)/d).toFixed(decimals);
删除parseInt()函数
截断不带零
function toTrunc(value,n){
return Math.floor(value*Math.pow(10,n))/(Math.pow(10,n));
}
or
function toTrunc(value,n){
x=(value.toString()+".0").split(".");
return parseFloat(x[0]+"."+x[1].substr(0,n));
}
测试:
toTrunc(17.4532,2) //17.45
toTrunc(177.4532,1) //177.4
toTrunc(1.4532,1) //1.4
toTrunc(.4,2) //0.4
用零截断
function toTruncFixed(value,n){
return toTrunc(value,n).toFixed(n);
}
测试:
toTrunc(17.4532,2) //17.45
toTrunc(177.4532,1) //177.4
toTrunc(1.4532,1) //1.4
toTrunc(.4,2) //0.40
function FixWithoutRounding(number, digits) {
var gbZero = '0000000000';
var subNumber = number.toString().split('.');
if (subNumber.length === 1)
return [subNumber[0], '.', '0000'].join('');
var result = '';
if (subNumber[1].length > digits) {
result = subNumber[1].substring(0, digits);
} else {
result = subNumber[1] + gbZero.substring(0, digits - subNumber[1].length);
}
return [subNumber[0], '.', result].join('');
}