2013-04-05 73 views
0

我從Google Map API V3獲取里程,並在基於地址和地址的文本框中顯示它。我想解析出數字並將其舍入到最接近的整數。獲取數字並循環到整數

數= 「29.9米」 //我要的結果爲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); 
    } 
+2

你嘗試過什麼嗎? – j08691 2013-04-05 17:04:57

回答

2

嘗試parseFloat + Math.ceil

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

您是否看過round的JavaScript API?

語法

Math.round(x)

參數

  • x的數字。

說明

如果數的小數部分是0.5或更大,所述參數是 圓形到下一個更大的整數。如果 數字的小數部分小於.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); 
+0

或Math.ceil()如果你真的想9.3顯示10 – 2013-04-05 17:07:18

+0

我試過這個,但它返回NAN。 – Ram 2013-04-05 17:07:20

+1

@Ram,如果你把這些信息放在你的問題中,這會有所幫助。 ;) – epascarello 2013-04-05 17:08:28

1

嘗試Math.round()

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

您可能需要打出多餘的字符。

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

這是一個長時間的答案。最後,將它定製到你需要的東西上會更有意義,但在這裏,我只是展示瞭如何在「」(空格)上分割並在將結果字符串解析爲浮點數後四捨五入。

雖然我會嘗試KaeruCT的回答。我不認爲parseInt或parseFloat實際上需要刪除非數字字符。