Javascript:如何舍入小数值?

时间:2013-01-03 11:01:11

标签: javascript

我的值为1724.1000000000001,如何将这样的值汇总到javascript中的1724.11? 我需要一个通用的功能。请帮忙......

5 个答案:

答案 0 :(得分:4)

一种简单的方法是:

var num = 1724.1000000000001;
num = Math.ceil(num * 100) / 100;
alert(num); //  1724.11

工作原理:

Ceil会将价值提高一倍。但是你想要有2个十进制数字。最好的方法是:

  1. 将值乘以100,
  2. 将其完成,
  3. 将其除以100.
  4. 现在你有一个带有2位小数的向上舍入值。 这就是:

    1724.1000000000001 * 100 = 172410.00000000001
    round-up on 172410.00000000001 = 172411
    172411 / 100 = 1724.11
    

答案 1 :(得分:3)

由于问题中的示例要求1724.11而不是1724.1的结果,我会假设您不是严格要round,而是ceil:< / p>

var n = 1724.10000000001;
Math.ceil(n * 100) / 100; // >> 1724.11

如果我们需要Math.round代替Math.ceil进行简单的向上舍入到第二个小数。

答案 2 :(得分:1)

来自http://www.javascriptkit.com/javatutors/round.shtml

var original=28.453

1) //round "original" to two decimals
var result=Math.round(original*100)/100  //returns 28.45

2) // round "original" to 1 decimal
var result=Math.round(original*10)/10  //returns 28.5

3) //round 8.111111 to 3 decimals
var result=Math.round(8.111111*1000)/1000  //returns 8.111

答案 3 :(得分:1)

您可以尝试toFixed修复2位小数,下面是代码。

var num=1724.1999;
alert(num.toFixed(2));​

结果1724.20

答案 4 :(得分:0)

将数字舍入为2位小数:

var num = 1724.1000000000001;
num = Math.ceil(num*100)/100;

// num == 1724.11

或者,试试这个:

var num = 1724.1000000000001;
function round(num, decimals){
    var d = Math.pow(10,decimals)
    return Math.ceil(num*d)/d;
}

console.log(round(num,0))
console.log(round(num,1))
console.log(round(num,2))
console.log(round(num,3))
console.log(round(num,4))
// 1725
// 1724.2
// 1724.11
// 1724.101
// 1724.1001