2013-01-22 43 views
3

可能重複:
How do you round to 1 decimal place in Javascript?在javascript舍入的數到小數點後

下面的代碼,顯示所覆蓋的總距離,特定的路線上,在谷歌地圖顯示。我設法將數字從公里轉換爲英里。以下是該功能的代碼:

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四捨五入爲小數點後一位?

+0

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed 變種N = 123.123; n.toFixed(1); // 123.1 –

回答

9

使用toFixed

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

這裏的小提琴:http://jsfiddle.net/VsLp6/

+1

請小心使用'.toFixed()',因爲它可能會針對不同的瀏覽器返回不同的舍入結果。閱讀[**這篇文章**](http://stackoverflow.com/questions/566564/javascript-functions-math-roundnum-vs-num-tofixed0-and-browser-inconsistenci)的主題的詳細信息! – Wilt

11
Math.round(total * 10)/10 

這導致了許多。 toFixed()給出一個字符串,詳見其他答案。

+0

也許是因爲它有一個內置函數('.toFixed()'),比使用Math.round()更優雅。雖然你的解決方案沒有問題,但它不應該被拒絕投票,因爲從技術上講它沒有錯。 – AlexStack

+0

@AlexStack返回不同類型的兩種不同方式 - mine是數字,toFixed()返回一個String。 – PinkElephantsOnParade

+0

好點。 +1對我來說。 – AlexStack

1

您正在查看的Number.prototype.toFixed; 41.76483039399999.toFixed(1) === "41.8";

​​

這裏有很多其他的方式來實現這一點,例如,不使用來自Math任何方法或Number

(~~(10 * total) + (~~(100 * total) % 10 >= 5))/10 + '' // "41.8" 
// (  417 +  (6 >= 5)    )/10 = 41.8 
0

情況下,有一個函數來完成你想要什麼:

var total = 41.76483039399999; print(x.toFixed(2));

將印刷41.76

相關問題