4

可能重复:
如何在 Javascript 中舍入到小数点后 1 位?

以下代码显示在特定路线上覆盖的总距离,显示在谷歌地图上。我设法将数字从公里转换为英里。这是该函数的代码:

function computeTotalDistance(result) {
        var total = 0;
        var myroute = result.routes[0];
        for (i = 0; i < myroute.legs.length; i++) {
          total += myroute.legs[i].distance.value;
        }
        total = total *0.621371/ 1000.
        document.getElementById('total').innerHTML = total + ' mi';

总数显示为41.76483039399999 mi。如何将四舍五入total到小数点后一位?

4

4 回答 4

17

使用toFixed

var total = 41.76483039399999;
total = total.toFixed(1) // 41.8

这是小提琴:http: //jsfiddle.net/VsLp6/

于 2013-01-22T14:37:26.787 回答
14
Math.round(total * 10) / 10

这会产生一个数字。toFixed() 给出一个字符串,详见其他答案。

于 2013-01-22T14:38:03.560 回答
1

您正在寻找Number.prototype.toFixed41.76483039399999.toFixed(1) === "41.8";

function computeTotalDistance(result) {
    var total = 0, myroute = result.routes[0];
    for (i = 0; i < myroute.legs.length; i++) {
        total += myroute.legs[i].distance.value;
    }
    total = (total * 0.621371 / 1000).toFixed(1);
    document.getElementById('total').innerHTML = total + ' mi';
}

有很多其他方法可以实现这一点,例如,不使用任何方法Math或实例Number

(~~(10 * total) + (~~(100 * total) % 10 >= 5))/10 + '' // "41.8"
// (      417   +     (6 >= 5)               )/10 = 41.8
于 2013-01-22T14:38:47.350 回答
0

有一个功能可以做你想做的事:

var 总计 = 41.76483039399999;打印(x.toFixed(2));

它将打印 41.76

于 2013-01-22T14:40:58.057 回答