decimal.js解决js小数点运算精度丢失不准确示例代码

代码语言:html

所属分类:其他

代码描述:decimal.js解决js小数点运算精度丢失不准确示例代码,decimal.js是一个的任意精度十进制类型JavaScript库

代码标签: decimall 小数点 运算 精度 丢失 不准确 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/decimal.js"></script>

<script type="module">
  import Decimal from '//repo.bfw.wiki/bfwrepo/js/decimal.mjs';
  
  
  //加
let a = 1
let b = 6 
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).add(new Decimal(b)) 
let res2 = Decimal(a).add(Decimal(b)) 

//减
//let a = "4"
//let b = "8"
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
//let res3 = new Decimal(a).sub(new Decimal(b)) 
//let res4 = Decimal(a).sub(Decimal(b)) 

//乘
//let a = 1
//let b = 6 
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
//let res5 = new Decimal(a).mul(new Decimal(b)) 
//let res6 = Decimal(a).mul(Decimal(b)) 

//除
//let a = 1
//let b = 6 
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
//let res = new Decimal(a).div(new Decimal(b)) 
//let res = Decimal(a).div(Decimal(b)) 

//注意
//上面的结果是 一个 Decimal 对象,你可以转换成 Number 或则 String
//let res = Decimal(a).div(Decimal(b)).toNumber()  // 结果转换成 Number
//let res = Decimal(a).div(Decimal(b)).toString()  // 结果转换成 String

//关于保存几位小数相关

y = new Decimal(987000.000)
y.sd()                                   // '3' 有效位数
y.sd(true)                               // '6' 总共位数

// 保留 多少个位数 (小数位 会补0)
x = 45.6
x.toPrecision(5)                         // '45.600'

// 保留 多少位有效位数(小数位 不会补0,是计算的有效位数)
x = new Decimal(9876.5)
x.toSignificantDigits(6)                 // '9876.5' 不会补0 只是针对有效位数

// 保留几位小数 , 跟 js 中的 number 一样
//toFixed
x = 3.456
// 向下取整
x.toFixed(2, Decimal.ROUND_DOWN)  // '3.45' (舍入模式 向上0 向下1 四舍五入 4,7)
// 向上取整

  
x = new Decimal(123.4567)
y = new Decimal('123456.7e-3')
z = new Decimal(x)
x.equals(y) && y.equals(z) && x.equals(z)        // true

// Precision loss from using numeric literals with more than 15 significant digits.
new Decimal(1.0000000000000001)         // '1'
new Decimal(88259496234518.57)          // '88259496234518.56'
new Decimal(99999999999999999999)       // '100000000000000000000'

// Precision loss from using numeric literals outside the range of Number values.
new Decimal(2e+308)                     // 'Infinity'
new Decimal(1e-324)                     // '0'

// Precision loss from the unexpected result of arithmetic with Number values.
new Decimal(0.7 + 0.1)                  // '0.7999999999999999'

x = new Decimal('2_147_483_647')


x = new Decimal('0xff.f')            // '255.9375'
y = new Decimal('0b10101100')        // '172'
z = x.plus(y)                        // '427.9375'

z.toBinary()                         // '.........完整代码请登录后点击上方下载按钮下载查看

网友评论0