在基地10舍入

Nei*_*man 1 javascript math number-manipulation

我有一个函数将给定函数的数字舍入到最近的整数便士.

<script type='text/javascript'>
Math.roundNumber = function(a,b){
    if(!isNaN(parseInt(a))){
        c = Math.pow(10,b);
        return (Math.round(a*c)/c);
    }
    return false;
}
</script>
Run Code Online (Sandbox Code Playgroud)

但是我注意到输入到函数中的所述数字必须四舍五入到最接近的一个便士,但它必须四舍五入到小数点后两位.

例如

15.236562213541684 would = 15.24  
9846.65456169846 would = 9846.66

我认为这只是一个改变回报的例子(Math.round(a c)/ c); 返回(Math.ceil(a c)/ c);

显然我错了.

对此事有何帮助?

**编辑**

这是我试图实现的公式,也许它会有所帮助

a = intrest price
b = terms
c = a/b
d = c*(b-1)
e = a-d
Run Code Online (Sandbox Code Playgroud)

所以例如

a = 295.30
b = 156
c = 295.30/156 = 1.90 (rounded up to nearest decimal as above)
d = 1.90 * (b-1) = 294.50
e = 295.30 - 294.50 = 0.80
Run Code Online (Sandbox Code Playgroud)

任何人都可以正确执行上述功能吗?

是我当前代码的链接,包括公式...这是我在第一次启动JavaScript时所做的一个非常古老的公式(现在是前一段时间)但是我现在仍然没有更好,因为我当时回来了.

任何人都可以清理它,看看他们是否可以看到为什么它不能与上述功能相匹配?

mat*_*t b 5

这已有内置功能Number.toFixed(numDigits),为什么不使用它呢?

参数:digits
小数点后显示的位数; 这可以是0到20之间的值,包括0和20,并且实现可以可选地支持更大范围的值.如果省略此参数,则将其视为0.

返回:
不使用指数表示法且在小数位后面具有正确位数的数字的字符串表示形式.如有必要,数字将四舍五入,如果需要,小数部分用零填充,以使其具有指定的长度.如果number大于1e + 21,则此方法只调用Number.toString()并以指数表示法返回一个字符串.

例:

>>> new Number(15.236562213541684).toFixed(2);
"15.24"
>>> new Number(9846.65456169846).toFixed(2);
"9846.65"
Run Code Online (Sandbox Code Playgroud)

最后一个与您的示例不匹配 - 9846.65456169846舍入到两个小数位应该是9846.65,而不是9846.66.