分析
对 js 有一定了解的人都知道,js 的数字精确度比较低,这就有必要自己去实现一套精确度高的算法了,精确到小数点后几位,是我们经常会用到的,比如价格的计算等,下面来讲讲这个算法的步骤
1、 要进行精度计算,首先要明确输入的是否为数字
2、 需要明确,精确到小数点后几位
3、 明确该数字是否为小数,不是的话,需要根据精度去做补 0 操作
4、 确定该数字后的小数位数是否够精确的小数长度,不够的话,也要做补 0 操作
5、 若该数字既是小数,小数长度又比精度位长,判断截取精度后的小数后一位是否大于五,是的画进一位
6、 满足精度位,小数精度位后一位进位操作确定之后,还需要确定小数部位是否需要进位,是的话,整数部位加 1,小数部位开头替换为 0,不是的话就直接返回
实现
| function twoDEcimal(number, precision = 2) {
 const temp = number;
 number = Number(number);
 
 if (Number.isNaN(number)) {
 console.log("无效的数字", temp);
 throw new Error("无效的数字", temp);
 }
 
 number = String(number);
 let numbers = number.split(".");
 
 if (numbers.length === 1) {
 return number + "." + "0".repeat(precision);
 } else {
 
 if (numbers[1].length < precision) {
 return number + "." + "0".repeat(precision - numbers[1].length);
 } else {
 
 let intNumber = parseInt(number.split(".")[0]);
 
 let decimal = number.split(".")[1];
 
 let frontDecimal = parseInt(decimal.substr(0, precision));
 
 let lastDecimal = parseInt(decimal.substr(precision, 1));
 
 if (lastDecimal >= 5) {
 frontDecimal += 1;
 }
 
 if (frontDecimal === Math.pow(10, precision)) {
 frontDecimal = "0".repeat(precision);
 intNumber += 1;
 }
 
 frontDecimal =
 "0".repeat(precision - String(frontDecimal).length) + frontDecimal;
 
 return `${intNumber}.${frontDecimal}`;
 }
 }
 }
 
 let a = twoDEcimal(1.255);
 console.log(a);
 a = twoDEcimal(0.005);
 console.log(a);
 
 | 
本文标题:数字精确到小数点两位
文章作者:Canace
发布时间:2020-08-12
最后更新:2025-09-14
原始链接:https://canace.site/number-precise-to-two-decimal-places/
版权声明:转载请注明出处