程序员开发程序员

Js 计算不精确的问题(使用math.js)

2019-09-27  本文已影响0人  i高安

最近在做一个小系统,里面包含了价格的运算,由于整个系统都是后台页面,所以第一时间的想法就是在后台运算,然后把结果返回到前端。但是写完之后感受了一下体验不太好,所以就前后端都判断,双重保障......

平常写后台都知道目前很多编程语言,直接计算会不精确,同样的使用Js运算也一样,是因为在计算机语言计算时会把十进制转为二进制,再计算。但是由于一些小数在换成二进制的时候出现了无限循环,又由于位数有限,就会截取一部分,导致十进制数不精确。

但是各大编程语言也都封装了自己的精确计算库,Js我选择使用math.js

安装方式

1.包管理器安装math.js

npm install mathjs

2.cdn

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/4.0.1/math.min.js"></script>

示例

// functions and constants
math.round(math.e, 3)                // 2.718
math.atan2(3, -3) / math.pi          // 0.75
math.log(10000, 10)                  // 4
math.sqrt(-4)                        // 2i
math.pow([[-1, 2], [3, 1]], 2)       // [[7, 0], [0, 7]]

// expressions
math.evaluate('12 / (2.3 + 0.7)')    // 4
math.evaluate('12.7 cm to inch')     // 5 inch
math.evaluate('sin(45 deg) ^ 2')     // 0.5
math.evaluate('9 / 3 + 2i')          // 3 + 2i
math.evaluate('det([-1, 2; 3, 1])')  // -7

// chained operations
math.chain(3)
    .add(4)
    .multiply(2)
    .done() // 14
上一篇下一篇

猜你喜欢

热点阅读