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

Js小数运算精度缺失的解决方法

项目场景:

提示:项目需求截图:

请添加图片描述


问题描述

众所周知Js做运算时0.1+0.2不等于0.3,目前项目需要计算关于金额的选项,涉及到金额保留后两位。保单欠款是根据用户输入的保单应收和保单欠款自动计算的。


原因分析:

产生浮点数计算精度不准确的原因:
在计算机角度,计算机算的是二进制,而不是十进制。二进制后变成了无线不循环的数,而计算机可支持浮点数的小数部分可支持到52位,所有两者相加,在转换成十进制,得到的数就不准确了,加减乘除运算原理一样。

提示:js小数计算精度缺失是历史遗留问题,被人诟病很多,不过也有办法解决,js小数计算会缺失精度,但正数不会有这个问题,所以计算时把小数扩大相应倍数,让它变成整数计算,最后结果再除以相应倍数,就得到了想要的结果。

不过我这边使用的是mathjs第三方库。下面是mathjs的解决办法


解决方案:

提示:mathjs解决方案:
官网:https://mathjs.org/index.html

安装

npm install mathjs

引入

import * as math from 'mathjs'

封装成方法

import * as math from 'mathjs';
//例如:num1-num2,在需要的地方直接调用subtract 传二个参数(num1,num2)// 加add(num1,num2){return math.add(math.bignumber(num1),math.bignumber(num2));},// 减subtract(num1,num2){return math.subtract(math.bignumber(num1),math.bignumber(num2));},// 乘multiply(num1,num2){return math.multiply(math.bignumber(num1),math.bignumber(num2));},// 除divide(num1,num2){return math.divide(math.bignumber(num1),math.bignumber(num2));
}
http://www.lryc.cn/news/121341.html

相关文章:

  • 25 | 葡萄酒质量数据分析
  • 在 Windows 上安装 OpenCV – C++ / Python
  • 前后端交互开发模式yapi使用
  • Ajax同源策略及跨域问题
  • JavaScript:解构赋值【对象】
  • 微服务与Nacos概述-2
  • 解决MySQL与Redis缓存一致性的问题
  • 王道机组难题分析
  • 数学建模(一)前继概念
  • C# 随机法求解线性规划问题 蒙特卡洛
  • nginx文档合集
  • 什么是BFC?它有什么作用?如何创建BFC?
  • svn文章四:版本控制策略 - 穿越时光机:SVN版本控制进阶技巧
  • SpringBoot+Mybatis-Plus实现增删改查超详细步骤
  • Qt应用开发(基础篇)——拆分器窗口 QSplitter QSplitterHandle
  • 屏幕尺寸单位 px、em、rem区别
  • yo!这里是STL::list类简单模拟实现
  • 小程序商城开发制作
  • 并发编程面试题2
  • 关于eclipse导入部署具有增删改查的项目
  • c++日志工具之——log4cpp
  • ES索引重建reindex详解
  • 前沿分享-中距离射频取电
  • UnrealEngine - 网络同步之连接篇
  • 【JDBC系列】- 扩展提升学习
  • 阻塞和非阻塞,同步和异步
  • 提速Rust编译器!
  • QT创建项目
  • 基于vue3+webpack5+qiankun实现微前端
  • 华为OD真题--完美走位--带答案