当前位置: 首页 > news >正文

哪建设网站好阿里云部署网站

哪建设网站好,阿里云部署网站,佛山网站建设网站建设,市住房和城乡建设局网站大连Decimal 是什么 想必大家在用js 处理 数字的 加减乘除的时候,或许都有遇到过 精度不够 的问题,还有那些经典的面试题 0.20.1 ! 0.3, 至于原因,那就是 js 计算底层用的是 IEEE 754 ,精度上有限制, 那么Deci…

Decimal 是什么

想必大家在用js 处理 数字的 加减乘除的时候,或许都有遇到过 精度不够 的问题,还有那些经典的面试题 0.2+0.1 !== 0.3,
至于原因,那就是 js 计算底层用的是 IEEE 754 ,精度上有限制,
那么Decimal.js 就是帮助我们解决 js中的精度失准的问题。

原理

  • 它的原理就是将数字用字符串表示,字符串在计算机中可以说是无限的。
  • 并使用基于字符串的算术运算,以避免浮点数运算中的精度丢失。它使用了一种叫做十进制浮点数算术(Decimal Floating Point Arithmetic)的算法来进行精确计算。
  • 具体来说,decimal.js库将数字表示为一个字符串,其中包含整数部分、小数部分和一些其他的元数据。它提供了一系列的方法和运算符,用于执行精确的加减乘除、取模、幂运算等操作。

精度丢失用例

const a = 31181.82
const b = 50090.91
console.log(a+b) //81272.73000000001

Decimal 的引入 与 加减乘除

如何引入

npm install --save decimal.js  // 安装
import Decimal from "decimal.js"  // 具体文件中引入
// 加let a = 1
let b = 6 
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new(推荐带new)
let res = new Decimal(a).add(new Decimal(b)) 
let res = Decimal(a).add(Decimal(b))// 减js 代码解读复制代码let a = "4"
let b = "8"
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).sub(new Decimal(b)) 
let res = Decimal(a).sub(Decimal(b))// 乘js 代码解读复制代码let a = 1
let b = 6 
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).mul(new Decimal(b)) 
let res = Decimal(a).mul(Decimal(b))// 除js 代码解读复制代码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

关于保存几位小数相关

//查看有几位小数 (注意不计算 小数点 最后 末尾 的 0)
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)
// 向上取整
Decimal.ROUND_UP //四舍五入
ROUND_HALF_UP //(主要)// 使用例子
let num2 = 0.2
let num3 = 0.1
let res = new Decimal(num2).add(new Decimal(num3)).toFixed(2, Decimal.ROUND_HALF_UP)
console.log(res); //返回值是字符串类型

超过 javascript 允许的数字

如果使用超过 javascript 允许的数字的值,建议传递字符串而不是数字,以避免潜在的精度损失。

new Decimal(1.0000000000000001); // '1'
new Decimal(88259496234518.57); // '88259496234518.56'
new Decimal(99999999999999999999); // '100000000000000000000'new Decimal(2e308); // 'Infinity'
new Decimal(1e-324); // '0'new Decimal(0.7 + 0.1); // '0.7999999999999999'

可读性

与 JavaScript 数字一样,字符串可以包含下划线作为分隔符以提高可读性。

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(); // '0b110101011.1111'
z.toBinary(13); // '0b1.101010111111p+8'x = new Decimal("0b1.1111111111111111111111111111111111111111111111111111p+1023"
);
// '1.7976931348623157081e+308'
http://www.yayakq.cn/news/977911/

相关文章:

  • 成都微信网站制作正规手游代理商
  • 艺术设计有限公司网站如何做优化推广
  • 小清新网站源码php网站语言切换功能如何做
  • 网站建设管理 优帮云互联网舆情分析
  • 网站开发工作介绍在线设计平台代理
  • 网站发展规划学做网站格式工厂
  • 域名抢注哪个平台好天津网站优化收费
  • 做免费的网站教程购物网站策划书
  • 温州网站优化案例调用wordpress数据
  • 江门网站建设工作wordpress老版本下载
  • flash成品网站wordpress网址导航源码
  • 锦州网站建设工作自学建立网站
  • 大庆北京网站建设成交型网站建设
  • 天河岗顶棠下上社网站建设手机域名做网站中国谁第一家
  • godaddy如何上传网站wordpress取消page
  • 类似稿定设计的网站个人网站注销原因
  • 都江堰建设局官方网站中国机械加工网订单
  • 高端网站优化企业网站备案好不好
  • 国外论文类网站有哪些方面公司做企业网站须知
  • 网站首页包含的内容怎么做设计房子的软件app
  • 最正规二手手表平台外贸seo是什么意思啊
  • 在线音乐网站模板wordpress 添加表情
  • j2ee 建设简单网站谷歌广告联盟一个月能赚多少
  • 做微商网站制作网站开发工程师需要什么技术
  • 网站 攻击 刷流量怎么自己做一个网页
  • seo网站建设课程如何用虚拟主机做网站
  • 网站新闻怎么写海南在线新闻中心
  • 如何做公司网站优化创建网页需要多少钱
  • 南京网站建设服务wordpress更改中文版后还是英文
  • 中文网站的英文江西短视频搜索seo推荐