如何格式化浮点数而不进行舍入?

时间:2012-01-20 18:33:18

标签: javascript

我正在尝试通过将小数点设置为“1”来格式化浮点数(例如341.75)。我试过了:

var num = 341.75;
alert(num.toFixed(1)); // output: 341.8
alert(num.toPrecision(1)); // output: 341.8

但我需要的是341.7!显然这两种方法都试图绕过它,有没有办法在没有舍入的情况下做到这一点?

5 个答案:

答案 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