我有一个值,我怎样才能在 javascript 中1724.1000000000001
四舍五入这样的值?1724.11
我需要一个通用函数。请帮助...
问问题
3670 次
5 回答
4
一个简单的方法是:
var num = 1724.1000000000001;
num = Math.ceil(num * 100) / 100;
alert(num); // 1724.11
这个怎么运作:
Ceil 会将值向上舍入。但是你想有 2 个十进制数字。最好的方法是:
- 将值乘以 100,
- 围起来,
- 除以 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 回答