今天碰到个这个问题,需要将小数的最末位按照给如下规则进行进位:
进位规则
当末位在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
1.5 ==> 2
1.38 ==> 1.4
1.7 ==> 2
3.156 ==>
3.16
当然,js的精度有限,比如 3.1561 ==> 3.1561000000000012。
如果用Java实现的话,自然要考虑使用BigDecimal实现,不然的话,如果小数位数过长,不够存。
请教js保持精度的方法。
分享到:
相关推荐
一位小数的进位加法和退位减法PPT学习教案.pptx
本文实例讲述了js实现四舍五入完全保留两位小数的方法。分享给大家供大家参考,具体如下: //四舍五入保留2位小数(若第二位小数为0,则保留一位小数) function keepTwoDecimal(num) { var result = parseFloat...
2020春四年级数学下册第七单元小数的加法和减法第一课时小数的进位加法教案西师大版
项目中遇到小数相似度(业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数。 直接上代码。 var nval = 0.12345; var percent = (Math.round(nval*10000))/100+'%'; 说明: 1.Math.round(num)函数...
js计算小数时会有误差,经过处理后就可以了
C语言实现小数转分数,包括带循环节的小数
任意实任意实现小数分频的verilog程序 现小数分频的verilog程序
js保留小数位数
基于FPGA的小数分频实现方法.pdf
该程序使用js 可校验输入框 为0-10 两位数字,并可保留两位小数
小数进位加法PPT学习教案.pptx
集中上传了几篇关于FPGA实现小数分频的论文。希望对大家有帮助。
三年级数学下册第五单元小数的初步认识5.5一位小数的加减法不进位不退位课时练西师大版
用单链表存储有理数N/M(N)的小数形式,若为无限循环小数,则用环链表表示;
JS小数加减乘除运算后小数点后产生多位数和计算精度损失的解决方案
四年级数学下册第八单元小数加法和减法8.1小数进位加法课时练冀教版
JavaScript 实现保留两位小数
该组件是对数字处理的一个组件,主要针对小数和还有百分号的数值的处理,其中包含小数的四舍五入及取百分号后几位小数的方法。
4. 使用自定义函数:例如,使用toFixed()方法和Math.round()方法组合实现小数的四舍五入。 数学函数: 1. 常数:Math.E、Math.LN10、Math.LN2、Math.PI、Math.SQRT1_2、Math.SQRT2等。 2. 乘方函数:Math.pow(x, n...