JS--使用第三方库解决浮点数(小数)计算不准确的问题
原文网址:JS--使用第三方库解决浮点数(小数)计算不准确的问题_IT利刃出鞘的博客-CSDN博客
简介
本文介绍如何解决JavaScript在计算浮点数(小数)时不准确(精度丢失)的问题。
问题描述
JS计算小数是不准确的
实例:
问题大全
// 加法
0.1 + 0.2 = 0.30000000000000004
0.2 + 0.4 = 0.6000000000000001// 减法
1.5 - 1.2 = 0.30000000000000004
0.3 - 0.2 = 0.09999999999999998// 乘法
19.9 * 100 = 1989.9999999999998
9.7 * 100 = 969.9999999999999// 除法
0.3 / 0.1 = 2.9999999999999996
0.69 / 10 = 0.06899999999999999// 比较0.1 + 0.2 === 0.3 // false(0.3 - 0.2) === (0.2 - 0.1) // false
JS的toFixed等也有问题
上述问题,有人可能想:使用JS的toFixed方法即可解决。但实际上,toFixed也有问题具体如下:
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(Num)。toFixed()四舍五入的规则与数学中的规则不同,其使用的是银行家舍入规则,银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。具体规则如下:简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
实例(谷歌浏览器)
1.35.toFixed(1) // 1.4 正确
1.335.toFixed(2) // 1.33 错误
1.3335.toFixed(3) // 1.333 错误
1.33335.toFixed(4) // 1.3334 正确
1.333335.toFixed(5) // 1.33333 错误
1.3333335.toFixed(6) // 1.333333 错误
解决方案:用第三方库
以下三方库越往下占空间越大。
number-precision
见:number-precision--使用/实例_IT利刃出鞘的博客-CSDN博客
big.js
见:big.js--使用/实例_IT利刃出鞘的博客-CSDN博客
bignumber.js
见:bignumber.js--使用/实例_IT利刃出鞘的博客-CSDN博客
decimal.js
见:decimal.js--使用/实例_IT利刃出鞘的博客-CSDN博客
mathjs
见:mathjs--使用/实例_IT利刃出鞘的博客-CSDN博客
JS--使用第三方库解决浮点数(小数)计算不准确的问题相关推荐
- 浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
在知乎上上看到如下问题: 浮点数精度问题的前世今生? 1.该问题出现的原因 ? 2.为何其他编程语言,比如java中可能没有js那么明显 3.大家在项目中踩过浮点数精度的坑? 4.最后采用哪些方案规避 ...
- python 浮点数精度丢失_浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源...
浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源 无论在java python javaScript里面都存在 1+ 2!== 3 问题,这个问题的产生根源在于计算存储数字是二进制,对无限循环小 ...
- c# 取余数 浮点数_浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
在知乎上上看到如下问题: 浮点数精度问题的前世今生? 1.该问题出现的原因 ? 2.为何其他编程语言,比如java中可能没有js那么明显 3.大家在项目中踩过浮点数精度的坑? 4.最后采用哪些方案规避 ...
- 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
先看图,0.1+0.2不等于0.3 这个是JavaScript语言自身存在的一个问题.说到这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到Jav ...
- 解决JS浮点数(小数)计算加减乘除的BUG
2019独角兽企业重金招聘Python工程师标准>>> //浮点数减法运算function FloatSub(arg1,arg2){var r1,r2,m,n;try{r1=arg1 ...
- 用decimal.js库解决JavaScript中计算精度丢失的问题
项目场景: 涉及小数点的计算 精度丢失原因看这里 解决 用decimal.js库,decimal.js是使用的二进制来计算的, 所以能解决js的精度问题. 安装和引入 执行命令npm i decima ...
- pod升级以及更新不到最新的第三方库解决方法
2019独角兽企业重金招聘Python工程师标准>>> 最近因为大量的第三个库适配HTTPS,我在更新中发现两个问题,写出来分享给大家. 1.cocoapods版本升级到最新版: 2 ...
- Python使用PuLP第三方库解决线性规划问题
假设我们考虑投资两种证券X和Y.若投资X证券的数量为xxx,投资Y证券的数量为yyy, 试求3x+2y3x+2y3x+2y的最大值.限制条件如下: 投资2倍的X证券数量与投资Y证券数量之和不超过100 ...
- python批量安装第三方库_使用Python批量安装第三方库
Python的很多功能通过第三方库实现,99%的第三方库可以通过Python自带的pip方法进行自动下载和安装.然而Python有几十万个第三方库,最常用的也有几十个.想要一次性地安装几十个常用的第三 ...
最新文章
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
- Git搭建自己的网站服务器(Linux)
- [Spring cloud 一步步实现广告系统] 13. 索引服务编码实现
- 树莓派应用实例3:环境光照强度测量
- float取整数部分_一步一步学Python3(小学生也适用) 第六篇: 变量及整数(int)类型...
- Coursera课程Python for everyone:Quiz: Networks and Sockets
- [云炬创业管理笔记]第四章把握创业机会测试5
- Django扩展自定义manage命令
- python 列表自定义排序_自定义排序的Python列表
- 逆天!百度AI音箱重磅升级:最大梦想实现
- paip.接入支付接口功能流程总结
- 数学史思维导图_思维导图话科学史:图说数学
- Win7安装CENTOS
- 彩色证件照片常用的红色、蓝色背景颜色值
- 项目管理第十二章项目采购管理
- golang-命令源码文件
- PS对图片的基本处理
- VMware安装ubuntu kylin
- C++ AVL树(补充)
- Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)
热门文章
- 基于小样本量的水下图像识别
- 优酷在计算机上无法联网,优酷视频看不了怎么办?
- 除法运算以及比较大小
- 火狐浏览器关闭百度热榜(屏蔽网站特定元素)
- 高仿钉钉和小米的日历控件
- 计算机语言表达爱情,各种语言用数字表达爱情的
- python把一堆图片分成n份_用Python实现将一张图片分成9宫格的示例
- 【解决方法】hexo g 报错 OperationalError: EPERM: operation not permitted, unlink ...
- 客户体验的全景分析:从了解到行动
- 信息学奥赛一本通c++版在线评测系统_OPPO Reno3 Pro评测:迄今为止最“性感”的5G手机...