前端-插件-数据精度以及计算

总结:

  • 如果要进行公式计算:

    math.evaluate('1.2 * (2 + 4.5)')     // 7.8
    复制代码
  • 实现高精度:

    import * as math from 'mathjs'
    // 正常的使用,仍旧会出现这种情况
    0.1 + 0.2            // 0.30000000000000004
    math.add(0.1, 0.2)   // 0.30000000000000004
    
    // 使用format即可实现高精度
    const ans = math.add(0.1, 0.2)     //  0.30000000000000004
    math.format(ans, {precision: 14})  // '0.3'
    
    // 或者使用bignumber
    
    math.add(0.1, 0.2)             // Number, 0.30000000000000004
    math.divide(0.3, 0.2)          // Number, 1.4999999999999998
    math.add(math.bignumber(0.1), math.bignumber(0.2))   // BigNumber, 0.3
    math.divide(math.bignumber(0.3), math.bignumber(0.2))  // BigNumber, 1.5
    复制代码

情景:

最近做项目,关于金融的,关于金融的话,那么必然涉及到数据计算,在金融里,很小的0.000000000001在面对巨大的金额时,也是会产生额外的费用的,所以需要数据高度精确。本人使用过bigNumber.js以及mathjs,个人推荐mathjs,因为它有以下几点:

  • 支持数字,大数,复数,分数,单位,字符串,数组和矩阵。

  • 与JavaScript的内置Math库兼容。

  • 包含一个灵活的表达式解析器。

    math.evaluate('1.2 * (2 + 4.5)')     // 7.8
    复制代码
  • 进行符号计算。

  • 带有大量内置函数和常量。

  • 也可以用作命令行应用程序。

  • 在任何JavaScript引擎上运行。

  • 很容易扩展。

  • 开源。

相关资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值