舍入无理数

时间:2014-04-15 21:40:35

标签: javascript rounding

SO:)

我有一些数字。我希望根据.符号后的数字对它们进行舍入。问题是我不知道在.之后会有多少零。

我知道函数toPrecision()toFixed(),但它们必须传递参数。所以我必须知道我需要在小数点后得到多少迹象,但我不知道。

我想要实现的目标?

+++++++++++++++++++++++++++++++++++
+ before            + after       +
+++++++++++++++++++++++++++++++++++
+ 0.0072512423324   + 0.0073      +
+ 0.032523          + 0.033       +
+ 0.000083423342    + 0.000083    +
+ 15.00042323       + 15.00042    +
+ 1.0342345         + 1.034       +
+++++++++++++++++++++++++++++++++++

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

尝试使用:

function roundAfterZeros(number,places){
    var matches=number.toString().match(/\.0*/);
    if(!matches)return number.toString();
    return number.toFixed(matches[0].length-1+places);
}

这是一个解释

var matches = number.toString().match(/\.0*/)在点(0)之后检查零(.)。

if(!matches)return number.toFixed(places);如果没有点(.),它必须是整数,所以我们只返回它(作为字符串以保持一致性)。

return number.toFixed(matches[0].length-1+places);如果是小数,我们会将其四舍五入到零(0)后的最接近的数字。

然后像roundAfterZeros(0.000083423342,2)

一样运行它
0.000083423342 to "0.000083"
1.0342345 to      "1.034"
1 to              "1"
0.5 to            "0.50"
-300 to           "-300"