我正在尝试通过将小数点设置为“1”来格式化浮点数(例如341.75)。我试过了:
var num = 341.75;
alert(num.toFixed(1)); // output: 341.8
alert(num.toPrecision(1)); // output: 341.8
但我需要的是341.7!显然这两种方法都试图绕过它,有没有办法在没有舍入的情况下做到这一点?
答案 0 :(得分:10)
小作弊怎么样?
Math.floor(num * 10) / 10
答案 1 :(得分:5)
您可以在格式化之前减去0.05。
答案 2 :(得分:2)
将数字转换为字符串后,您可以使用substring()
方法:
num = num.substring(0, num.indexOf(".") + 2));
答案 3 :(得分:0)
我没有看到任何其他合适的方法(至少在MDN reference for Number上)
所以也许你可以去 hackish 路线:
var num = 341.75; //341; //try without decimal
var str = num.toString();
var len = str.indexOf(".")==-1 ? str.length : str.indexOf(".")+2;
alert(str.substring(0,len));
在此处查看此操作: http://jsfiddle.net/giddygeek/YtTzL/3/
答案 4 :(得分:0)
You can try this if you want don't want rounding
> function myFunction() {
var str = 12.234556;
str = str.toString().split('.');
var res = str[1].slice(0, 2);
document.getElementById("demo").innerHTML = str[0]+'.'+res;
}
output:12.23