前端项目中如何实现 JS 数字类型保留小数点后2位,避免精度丢失问题(不可四舍五入)
1.自己封装实现,数字整体乘100,利用 Math.floor 向下取整,最后再除以100
2.外部库,bignumber.js 、jsbi-calculator
【以下回答由 GPT 生成】
解决方案:
在JavaScript中,可以使用toFixed()
方法来实现保留小数点后两位的功能,但它使用的是四舍五入方式。如果不使用四舍五入并保留小数点后两位,可以使用以下方法。
方法一:使用字符串操作 1. 将数字转换为字符串。 2. 查找小数点位置。 3. 根据小数点位置将字符串拆分为整数部分和小数部分。 4. 取小数部分前两位作为新的小数部分。 5. 将整数部分和新的小数部分拼接起来,并转换为数字类型。
示例代码:
function formatNumber(number) {
var str = number.toString(); // 将数字转换为字符串
var decimalIndex = str.indexOf('.'); // 获取小数点位置
if (decimalIndex === -1) {
// 如果没有小数点,则直接返回原始数字类型
return number;
}
var integerPart = str.substring(0, decimalIndex); // 获取整数部分
var decimalPart = str.substring(decimalIndex + 1, decimalIndex + 3); // 获取小数部分的前两位
var result = parseInt(integerPart + decimalPart); // 拼接整数部分和新的小数部分,并转换为数字类型
return result;
}
var number = 12.3456789;
var formattedNumber = formatNumber(number);
console.log(formattedNumber); // 输出结果:12.34
方法二:使用乘除法 1. 将数字乘以100,使小数点后两位变为整数部分。 2. 将整数部分转换为整数类型。 3. 将整数部分除以100,得到保留小数点后两位但不四舍五入的结果。
示例代码:
function formatNumber(number) {
var result = Math.floor(number * 100) / 100; // 乘以100,取整数部分,再除以100
return result;
}
var number = 12.3456789;
var formattedNumber = formatNumber(number);
console.log(formattedNumber); // 输出结果:12.34
这两种方法都可以避免浮点数精度丢失问题,并保留小数点后两位,但不使用四舍五入。
【相关推荐】