前端项目中如何实现 JS 数字类型保留小数点后2位,避免精度丢失问题(不可四舍五入)

前端项目中如何实现 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

这两种方法都可以避免浮点数精度丢失问题,并保留小数点后两位,但不使用四舍五入。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^