【问题标题】:Get the number and round to whole number获取数字并四舍五入为整数
【发布时间】:2013-04-05 17:04:28
【问题描述】:

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

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);
    }

【问题讨论】:

  • 你试过了吗?

标签: javascript jquery


【解决方案1】:

您是否查看过 round 的 JavaScript API?

语法

Math.round(x)

参数

  • x 一个号码。

说明

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

【讨论】:

  • 或 Math.ceil() 如果你真的希望 9.3 显示 10
  • @Ram,如果你把这些信息放在你的问题中会有所帮助。 ;)
  • 您是否输入了数字作为参数?你确定参数是一个数字吗? NAN = 不是数字。
【解决方案2】:

试试parseFloat + Math.ceil:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      试试Math.round():

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-19
        • 2015-11-12
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 2015-01-26
        相关资源
        最近更新 更多