javaScript中的数字精度控制问题

javaScriptde decimal.js库怎么控制数字的精度

function round(x, y) {
  const a = new Decimal(x).round();
  Decimal.set({ precision: 2, rounding: y });
  return a;
}

console.log(round("1235.1235", 1).valueOf()); // 1235

上边是代码,不知道问题出在哪里

阅读 2.3k
2 个回答

你没有说想要的结果是什么。
看了下文档感觉round的作用就是取整吧。
如果要实现控制位数的话,用toExponential, toFixed和toPrecision方法吧。

x = new Decimal(255.5)
x.toExponential(5)              // '2.55500e+2'
x.toFixed(5)                    // '255.50000'
x.toPrecision(5)                // '255.50'

由于js是一种弱类型语言,而计算机能够读取的数字只有0&1,所以一些浮点数会转换成0&1后再进行运算,所以会出现这种精度丢失的问题,我目前了解到的有三种方式:
1.bignumber.js 通过这个js库来进行计算;
2.将需要运算的数进行乘以10的n次幂,运算之后再去处以10的n次幂,即可得到准确的数字;
3.对运算后的数进行toFixed(),但是这种方法一样会丢失精度,不推荐使用;
4.纯手打,望采纳

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题