1

我有一个值,我怎样才能在 javascript 中1724.1000000000001四舍五入这样的值?1724.11我需要一个通用函数。请帮助...

4

5 回答 5

4

一个简单的方法是:

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

这个怎么运作:

Ceil 会将值向上舍入。但是你想有 2 个十进制数字。最好的方法是:

  1. 将值乘以 100,
  2. 围起来,
  3. 除以 100。

现在您有了一个带有 2 位小数的向上舍入值。这就是发生的事情:

1724.1000000000001 * 100 = 172410.00000000001
round-up on 172410.00000000001 = 172411
172411 / 100 = 1724.11
于 2013-01-03T11:20:10.223 回答
3

由于问题中的示例要求结果,1724.11而不是1724.1我会假设您并不严格希望round,而是ceil

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

如果需要简单的四舍五入到小数点后二位,我们Math.round而不是Math.ceil.

于 2013-01-03T11:05:15.337 回答
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
于 2013-01-03T11:04:53.203 回答
1

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

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

结果1724.20

于 2013-01-03T11:07:12.560 回答
0

要将数字四舍五入到小数点后两位:

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
于 2013-01-03T11:05:26.380 回答