0

Google Map API V3 からマイルを取得し、送信元アドレスと送信先アドレスに基づいてテキスト ボックスに表示しています。数値を解析して、最も近い整数に丸めたいと思います。

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 の小数部分が .5 以上の場合、引数は次に大きい整数に丸められます。number の小数部分が .5 未満の場合、引数は次に小さい整数に丸められます。

round は Math の静的メソッドであるため、作成した Math オブジェクトのメソッドとしてではなく、常に Math.round() として使用します。


編集:

数値を取得するには、文字列をその部分に変換する必要があります

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

余分な文字を分割する必要がある場合があります。

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

これは長ったらしい答えです。最終的には、正確に必要なものに合わせて調整する方が理にかなっていますが、ここでは " " (スペース) で分割し、結果の文字列を float として解析した後に丸める方法を示しています。

私は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 に答える