toFixed() 保留小数不精准,大数据计算 bignumber.js、big.js

Big.js: Big.js 是另一个类似于 Decimal.js 的高精度计算库,它也可以解决 JavaScript 浮点数计算的精度问题。

npm install big.js

const Big = require('big.js');const a = new Big('0.1');
const b = new Big('0.2');
const result = a.plus(b); // 使用 Big.js 进行加法运算console.log(result.toString()); // 输出 '0.3'

Big.js 库可以用于保留小数位数。它提供了一些方法来控制保留小数的精度。下面是一些示例:

1、保留特定小数位数:使用 Big.js 的 toFixed 方法可以保留指定的小数位数。 

const Big = require('big.js');const num = new Big('123.456789');
const rounded = num.toFixed(2); // 保留两位小数console.log(rounded.toString()); // 输出 '123.46'

2、设置全局小数位数:你也可以在全局范围内设置 Big.js 对象的默认小数位数。 

const Big = require('big.js');
Big.DP = 2; // 设置默认小数位数为 2const num = new Big('123.456789');
const rounded = num.toFixed(); // 默认保留两位小数console.log(rounded.toString()); // 输出 '123.46'

 3、直接截断小数部分:如果只是想截断小数部分而不进行四舍五入,可以使用 toFixed(0)

const Big = require('big.js');const num = new Big('123.456789');
const truncated = num.toFixed(0); // 截断小数部分console.log(truncated.toString()); // 输出 '123'

 BigNumber.js 也是一个可用于处理大数字和高精度计算的 JavaScript 库,类似于 Big.jsDecimal.js。它可以处理浮点数的精度问题,并允许你控制数字的小数位数。

npm install bignumber.js

1、保留小数位

const BigNumber = require('bignumber.js');const num = new BigNumber('123.456789');
const rounded = num.toFixed(2); // 保留两位小数console.log(rounded.toString()); // 输出 '123.46'

2、加减乘除 

const BigNumber = require('bignumber.js');// 创建 BigNumber 实例
const num1 = new BigNumber('123.456');
const num2 = new BigNumber('78.9');// 加法
const sum = num1.plus(num2);
console.log('加法结果:', sum.toString()); // 输出 '202.356'// 减法
const difference = num1.minus(num2);
console.log('减法结果:', difference.toString()); // 输出 '44.556'// 乘法
const product = num1.times(num2);
console.log('乘法结果:', product.toString()); // 输出 '9743.9344'// 除法
const quotient = num1.dividedBy(num2);
console.log('除法结果:', quotient.toString()); // 输出 '1.564077

3、取余(求模)

const BigNumber = require('bignumber.js');const num1 = new BigNumber('123456789012345678901234567890');
const num2 = new BigNumber('123');const remainder = num1.modulo(num2);
console.log('取余结果:', remainder.toString()); // 输出 '33'

4、比较大小

const BigNumber = require('bignumber.js');const num1 = new BigNumber('100');
const num2 = new BigNumber('200');const isGreaterThan = num1.isGreaterThan(num2);
const isLessThan = num1.isLessThan(num2);
const isEqualTo = num1.isEqualTo(num2);console.log('是否大于:', isGreaterThan); // 输出 false
console.log('是否小于:', isLessThan); // 输出 true
console.log('是否相等:', isEqualTo); // 输出 false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm 无法运行的解决方案

问题: PyCharm 无法运行,该怎么办? 解决方案: 1. 检查 Python 解释器 确保已为 PyCharm 配置正确的 Python 解释器。打开 PyCharm,转到“文件”>“设置”>“项目”>“Python 解释器”。选择所需的 Python …

英语六级常用词汇2

英语六级常用词汇1 blush [blʌʃ] 脸红(名词、动词):面部因羞愧、激动或尴尬而变红。Example: She began to blush when they complimented her.翻译: 当他们称赞她时,她开始脸红。 pedal [ˈpɛdəl] 踏板&#xff…

数组和指针经典笔试题讲解下

目录 创作不易,如对您帮助,还望一键三连,谢谢!!! 题目一: 题目二: 题目三: 题目四: 题目五: 题目六: 题目七: 创作…

在 Ubuntu 下使用 clash-for-linux-backup

记录一下如何在 Ubuntu(其它带bash的Linux应该都可以)下运行Clash 有人已经制作了方便使用的脚本, 仓库为 https://github.com/Elegycloud/clash-for-linux-backup, 直接使用这个仓库就可以了. clone 这个仓库 https://github.com/Elegycloud/clash-for-linux-backup 到本地 …

震惊!某省图书馆竟然可以注册后直接访问知网并下载文章?

四川省图书馆 使用说明 1.点击进入https://portal.sclib.org/interlibSSO/main/main.jsp 显示如下: 2.关注四川省图书馆公众号并注册 3.点击馆外登录并使用刚注册的用户名密码登录 显示如下: 4.登录成功后跳转至首页并点击cnki即可正常使用

2024年最新一线互联网企业高级软件测试工程师面试题大全

1、功能测试 功能测试是游戏测试中跟“玩游戏”最相关的一个环节。 当然这里的“玩”不是要真的让你感受快乐,而是要通过“玩”游戏,发现存在的问题或不合理的地方。因此,这个“玩”的过程基本不会感受到游戏的乐趣。事实上,每一次…

BIO NIO AIO有什么区别?

通俗易懂地解释这些东西是我的风格, BIO就是阻塞io,就是一个程序在发出io请求之后不能干任何别的事,只能等待请求,不断检测io的状态,只有接受到反馈之后才能干别的事 适用场景: 用作请求少而且连接时间短的情况 NIO就是非阻塞,也就是没有阻塞,怎么没有阻塞了?说白了就是发出…

低代码+定制物资管理:创新解决方案探析

引言 在当今快速变化的商业环境中,企业面临着不断增长的挑战,如提高效率、降低成本、满足客户需求等。为了应对这些挑战,企业需要不断创新并采用先进的技术解决方案。在这样的背景下,低代码开发和定制化物资管理成为了引领企业变…

管理情绪方法中篇【三分法、整理自己的观念合理、人活着要有弹性】

是 VS 非、成功 VS 不成功 二分法 逃出二分法【二合一,三分法】:不公平才是公平,公平才是不公平 有弹性回答: 1、好像还不错 2、到时在看看,有弹性 3、没有意见,我突然想到一个意…

【3GPP】【核心网】【5G】5G核心网协议解析(四)(超详细)

1. 欢迎大家订阅和关注,精讲3GPP通信协议(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 目录 1. NGAP 按流程功能分类 1.1 接口管理过程 1.1.1 NG Setup 1.2.1 NAS消息传输过程 Transport of NAS Messa…

Android 14设置android:importantForAutofill=“no“无效

密码输入框EditText不希望弹出Google的是否保存密码弹出框, 直接设置了android:importantForAutofill"no", android:inputType"textPassword|textNoSuggestions"在安卓12手机上有效,但是在安卓14上面就不行了&#xff0…

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性 异常详情 有一个类,里面有两个属性和一个类似工具的getRealName()方法如下: getRealName()方法就是获取这个人的真实名字,如果获取不到就以name返回…

堆的介绍,实现,使用(c语言实现)

目录 堆的概念 堆的性质: 堆的分类 父子结点的下标关系 堆的向下调整算法 ​编辑小堆 大堆 建堆 堆的向上调整算法 小堆 大堆 堆的基本操作 定义堆 初始化堆 销毁堆 打印堆 堆的插入 堆的删除 大堆(Max Heap)的向下调整算法…

jadx反编译apk

ref:https://github.com/skylot/jadx jadx是一款反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。 安装: 1.windos: https://github.com/skylot/jadx/releases/tag/v1.2.0 下载jadx-1.…

Java 设计模式(上)

目录 一、单一职责原则 二、开闭原则 三、里氏替换原则 四、迪米特法则 五、接口隔离原则 六、依赖倒置原则 七、工厂方法 八、抽象工厂 九、建造者模式 十、原型模式 十一、单例模式 十二、适配器模式 一、单一职责原则 单一职责原则又称单一功能原则,…

【Redis 开发】分布式锁中的常见问题和Lua脚本

分布式锁中的问题 分布式锁中我们设置的过期时间: 如果有一个线程获取锁之后在进行操作时,到达了锁的过期时间,之后就会有别的线程获得锁,如果这时,第一个线程执行完成后释放锁,就会将第二个锁的线程删除 …

回溯-单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…

SpringMVC深解--一起学习吧之架构

SpringMVC的工作原理主要基于请求驱动,它采用了前端控制器模式来进行设计。以下是SpringMVC工作原理的详细解释: 请求接收与分发: 当用户发送一个请求到Web服务器时,这个请求首先会被SpringMVC的前端控制器(Dispatche…

关于远程桌面端口的优化措施的建议

在信息技术的世界中,远程桌面连接已成为企业、教育和个人用户之间共享信息、协作工作的重要工具。而这一切的背后,都离不开远程桌面端口(RDP,Remote Desktop Protocol Port)的支持。RDP端口不仅关乎到远程访问的顺畅性…

自然语言处理的发展及归纳介绍

NLP简介 自然语言处理(Natural Language Processing,NLP)是人工智能领域的一个重要分支,旨在使计算机理解、解释和生成人类语言。NLP的产生背景可以追溯到上世纪50年代,随着计算机科学和人工智能领域的发展&#xff0c…