JavaScript如何将数字保留小数点后三位
在JavaScript中截断数字到小数点后三位(非四舍五入)
看你的需求是要直接截断小数点后第四位及以后的数字,而不是四舍五入——比如把14.4565576变成14.456,不是14.457对吧?下面给你几种靠谱的实现方式:
方法一:使用数学运算(最简洁)
利用Math.trunc()直接截断整数部分的特性,先把数字放大1000倍,截断小数后再缩小回去:
const myresult = 14.4565576; const truncated = Math.trunc(myresult * 1000) / 1000; console.log(truncated); // 输出 14.456
- 优点:代码短,处理正负数字都没问题(比如
-14.4567会变成-14.456) - 注意:如果原数字小数部分不足三位,结果会保留原有的小数位数(比如
14.2处理后还是14.2,不是14.200),如果需要字符串形式的补零,可以再加一步truncated.toFixed(3),但要先做截断再转哦!
方法二:字符串处理(更直观,适合调试)
把数字转成字符串后拆分整数和小数部分,手动截取小数前三位再拼接:
function truncateToThreeDecimals(num) { const [integerPart, decimalPart] = num.toString().split('.'); // 没有小数部分直接返回原数 if (!decimalPart) return num; // 拼接整数部分和截取后的小数部分,再转回数字 return parseFloat(`${integerPart}.${decimalPart.slice(0, 3)}`); } const myresult = 14.4565576; console.log(truncateToThreeDecimals(myresult)); // 输出 14.456
- 优点:逻辑清晰,能直观看到每一步的处理过程,适合新手理解
- 注意:如果数字是科学计数法形式(比如极大或极小的数),这种方法可能需要额外处理,但日常业务中很少遇到这种情况
避坑提醒:别直接用toFixed(3)
很多人第一反应会想到toFixed(),但它是四舍五入的,比如:
console.log(14.4565576.toFixed(3)); // 输出 "14.457"
这和你要的截断效果不符,所以一定要先做截断处理,再根据需求决定是否用toFixed()补零。
内容的提问来源于stack exchange,提问作者keszok
相关产品推荐
相关产品推荐

