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

js关于number类型的计算问题

js中关于number类型的计算

因:在js中,number类型是用于表示数值的基本类型,它遵循 IEEE 754 双精度浮点数(64 位)标准。这导致在某些计算中可能出现精度问题。

例:console.log(0.1 + 0.2); // 0.30000000000000004

我这里出于个人习惯,使用三方库big.js来解决精度问题

npm install big.js
import Big from 'big.js';const a = new Big(0.1);
const b = new Big(0.2);
const result = a.plus(b);console.log(result.toString()); // "0.3" ✅

顺便贴一下常见用法示例,便于我日后追溯

import Big from 'big.js';// 创建 Big 实例
const a = new Big(0.1);
const b = new Big(0.2);// 加法
console.log(a.plus(b).toString()); // "0.3"// 减法
console.log(b.minus(a).toString()); // "0.1"// 乘法
console.log(a.times(b).toString()); // "0.02"// 除法
console.log(b.div(a).toString()); // "2"// 比较
console.log(a.lt(b)); // true(小于)
console.log(a.eq(b)); // false(等于)

在项目过程中,还有很多实际问题需要考虑,比如:new Big中传入了非法值,(undefined,null,NaN,‘字符串’) 都会出现Invalid number报错。

尝试使用方法

  1. 使用??过滤一下?
b.minus(a ?? 0) // 有很大问题,只能过滤null与undefined,并没有过滤'' 还是会报错,不可取
  1. 使用??‘’
b.minus(((a ?? '') === '') ? 0 : a) // 过滤掉了'',算是解决了大部分问题
  1. 使用函数封装
function safeBig(val: any): Big {const num = Number(String(val).trim()) // 这里有个知识点,Number不会抛错,只会返回NaNreturn isFinite(num) ? new Big(num) : new Big(0)
}// 计算
safeBig(a).minus(safeBig(b))
http://www.xdnf.cn/news/6500.html

相关文章:

  • msf安卓远控木马手动捆绑正常apk
  • LLM中最后一个位置的对数概率是什么? 怎么作为LOSS实现方式
  • C++23 新特性:ranges::contains 与 ranges::contains_subrange
  • 线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵
  • RPA 自动化实现自动发布
  • 基于matlab实现AUTOSAR软件开发---答疑6
  • 瓶装燃气送气工考试的实操考核内容有哪些?
  • Python训练营打卡 Day26
  • Git - 1( 14000 字详解 )
  • 动态库和静态库的区别
  • 攻击溯源技术体系:从理论架构到工程化实践的深度剖析
  • SQL实战:06交叉日期打折问题求解
  • 论文学习_Precise and Accurate Patch Presence Test for Binaries
  • 浅析 Spring 启动过程:从源码到核心方法
  • 【Redis】双向链表结构
  • ARM A64 LDR指令
  • constexpr 关键字的意义(入门)
  • 关于在深度聚类中Representation Collapse现象
  • RM算法的地下宫殿
  • 解决 Conda 安装 PyTorch 1.1.0 报错:excluded by strict repo priority(附三种解决方案)
  • 射击游戏demo11
  • 微服务如何实现服务的高并发
  • idea整合maven环境配置
  • 幼儿学前教育答辩词答辩技巧问题答辩自述稿
  • IPLOOK | 2025 MVNOs 世界大会:从Wi-Fi通话到卫星覆盖
  • MapReduce架构-打包运行
  • gitlab+portainer 实现Ruoyi Vue后端CI/CD
  • Trae 插件 Builder 模式:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验
  • 全面掌握JSR303校验:从入门到实战
  • 安全牛报告解读《低空经济发展白皮书(3.0)安全体系》