使用underscorejs解决js的大数问题

js的浮点运算存在精度问题
原因:js对于number类型的数使用的是IEEE754标准中的双精度数存储,总共64位,其中:1位符号位,11位指数位以及52位小数位;表示小数时,超出小数精度的要进行"零舍一入"操作,因此,对小数相加,实际也要对结果进行零舍一入操作,导致精度问题

首先进行大数计算配置:

window.math.config({
  number: 'BigNumber', // Default type of number:
                       // 'number' (default), 'BigNumber', or 'Fraction'
  precision: 64        // Number of significant digits for BigNumbers
});

调用方式:

function calculate(str) {
  return parseFloat(math.format(math.eval(str)));
}

注意:必须使用math.format()进行转换

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容