0

我从 Google Map API V3 获取里程,并根据 from 和 to 地址在文本框中显示它。我想解析出数字并将其四舍五入到最接近的整数。

Miles = "29.9 mi" // 我希望结果为 30 Miles = "9.3 mi" // 10

我试过 Math.round 但它返回 NAN。

if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
        var miles = response.routes[0].legs[0].distance.text;
        miles = Math.round(miles);
        $('#TotalMiles').val(miles);
    }
4

4 回答 4

3

你看过用于round的 JavaScript API吗?

句法

Math.round(x)

参数

  • x一个号码。

描述

如果 number 的小数部分是 0.5 或更大,则将参数四舍五入到下一个更高的整数。如果 number 的小数部分小于 0.5,则将参数四舍五入到下一个较小的整数。

因为 round 是 Math 的静态方法,所以您始终将其用作 Math.round(),而不是作为您创建的 Math 对象的方法。


编辑:

您需要将字符串转换为其部分以获取数字

Miles = "29.9 mi"
var num = parseFloat(Miles);
Math.round(num);

以及使用正则表达式的方法

Miles = "29 mi"
var rounded = Miles.replace(/(\d+(\.\d+)?)(\s?mi)/, function(match, number, x, units){   return Math.round(parseFloat(number)) + units });
console.log(rounded);
于 2013-04-05T17:06:19.753 回答
2

尝试parseFloat+ Math.ceil

var number = "9.3 mi";
console.log(Math.ceil(parseFloat(number)));
于 2013-04-05T17:09:14.423 回答
2

您可能需要拆分多余的字符。

var str = "29.9 mi";
var number = str.split(" ");
var new_number = Math.round(parseFloat(number[0]));

这是一个冗长的答案。最后,根据您的确切需要对其进行定制会更有意义,但在这里我只是展示如何在“”(空格)上拆分并在将结果字符串解析为浮点数后对其进行舍入。

不过,我会尝试 KaeruCT 的答案。我认为 parseInt 或 parseFloat 实际上不需要删除非数字字符。

于 2013-04-05T17:10:15.223 回答
1

尝试Math.round()

var number =29.9;
console.log(Math.round(number));
于 2013-04-05T17:06:54.660 回答