获取数字并舍入到整数

时间:2013-04-05 17:04:29

标签: javascript jquery

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

Miles =“29.9 mi”//我希望结果为30 英里=“9.3英里”// 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 个答案:

答案 0 :(得分:3)

您是否看过round的JavaScript API?

  

<强>语法

     

Math.round(x)

     

<强>参数

     
      
  • x一个数字。
  •   
     

<强>描述

     

如果数字的小数部分是.5或更大,则参数为   四舍五入到下一个更高的整数。如果是小数部分   number小于.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);

答案 1 :(得分:2)

尝试parseFloat + Math.ceil

var number = "9.3 mi";
console.log(Math.ceil(parseFloat(number)));

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分:1)

尝试Math.round()

var number =29.9;
console.log(Math.round(number));