我从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);
}
答案 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));