JS实现⼩数末位进位⽅法今天碰到个这个问题,需要将⼩数的最末位按照给如下规则进⾏进位:
进位规则
当末位在0-4时,末位进0.5。如 1.3 ==> 1.5
当末位在5-9时,末位进1.0。如 1.5 ==> 2.0
<script>
function fix(d) {
if (parseInt(d) == d) return d;
// ⼩数变整数.
var len = 1;
while (parseInt(d) != d) {
d = d * 10;
len *= 10;
}
// 取末位
var last = Math.abs(len == 1 ? 0 : d % 10);
var d1 = d - last;
if (last >= 0 && last < 5) {
d1 = d1 + 5;
} else {
d1 = d1 + 10;
}
d1 = d1 / len;
return d1;
}
var test = [-12.365, 198.8, 6, 1.2, 1.4, 1.5, 1.38, 1.70, 3.156];
for (var i = 0; i < test.length; i++) {
document.write(test[i] + " ==> " + fix(test[i]) + "<br/>");
}
</script>
运⾏结果
-12.365 ==> -12.36
198.8 ==> 199
6 ==> 6
1.2 ==> 1.5
1.4 ==> 1.5
bigdecimal格式化两位小数1.5 ==> 2
1.38 ==> 1.4
1.7 ==> 2
3.156 ==> 3.16
当然,js的精度有限,⽐如 3.1561 ==> 3.1561000000000012。
如果⽤Java实现的话,⾃然要考虑使⽤BigDecimal实现,不然的话,如果⼩数位数过长,不够存。
请教js保持精度的⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论