Sam*_*Sam 13 javascript rounding
问题
有没有人知道在JavaScript中将浮点数舍入到最接近的0.05的方法?
例
BEFORE | AFTER
2.51 | 2.55
2.50 | 2.50
2.56 | 2.60
Run Code Online (Sandbox Code Playgroud)
现行守则
var _ceil = Math.ceil;
Math.ceil = function(number, decimals){
if (arguments.length == 1)
return _ceil(number);
multiplier = Math.pow(10, decimals);
return _ceil(number * multiplier) / multiplier;
}
Run Code Online (Sandbox Code Playgroud)
其他地方......
return (Math.ceil((amount - 0.05), 1) + 0.05).toFixed(2);
这导致......
BEFORE | AFTER
2.51 | 2.55
2.50 | 2.55
2.56 | 2.65
Run Code Online (Sandbox Code Playgroud)
Rob*_*b W 33
乘以20,然后除以20:
(Math.ceil(number*20)/20).toFixed(2)
Run Code Online (Sandbox Code Playgroud)
mar*_*yzm 10
我会选择实际除以你想要它的数字的标准,并将其四舍五入然后再将其再次乘以.这似乎是一种适当的工作方法,您可以使用任何数字,并保持您想要实现的目标的心理形象.
var val = 26.14,
factor = 0.05;
val = Math.round(val / factor) * factor;
Run Code Online (Sandbox Code Playgroud)
这将适用于数十,数百或任何数字.如果你特别舍入到更高的数字,那么使用Math.ceil而不是Math.round.
另一种专门用于舍入到一个或多个小数位(而不是半个位置)的方法如下:
Number(Number(1.5454545).toFixed(1));
Run Code Online (Sandbox Code Playgroud)
它创建一个固定数字字符串,然后将其转换为真实字符串Number.
Rob补充说:
(Math.ceil(number*20 - 0.5)/20).toFixed(2)
Run Code Online (Sandbox Code Playgroud)
否则它总是向上舍入到最接近的0.05.
**更新**
很抱歉有人指出这不是orig海报想要的.
| 归档时间: |
|
| 查看次数: |
10137 次 |
| 最近记录: |