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; // 设置默认小数位数为 2

const 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.mfbz.cn/a/575496.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【自定义渲染通道】

自定义渲染通道 2023-09-07 14:58 How to Create Masks With the Custom Depth Buffer Tips - Tricks Unreal Engine.mp4 后期材质ppm_customDepth 要加入通道的物体设置 render customdepth pass postprocessvolue 设置post process materials 为上面的ppm_customDepth 不同…

【信安评估】2024年全国职业院校技能大赛高职组“信息安全管理与评估”安徽省选拔赛赛项规程

培训、环境、资料、考证 公众号:Geek极安云科 网络安全群:624032112 网络系统管理群:223627079 网络建设与运维群:870959784 移动应用开发群:548238632 极安云科专注于技能提升,赋能 2024年广东省高校的技…

PLL深度解析第一篇——PLL的知识图谱

在硬件电路中,时钟就像心脏一样,在时钟的节拍下,不同的芯片、不同的电路、不同的接口都可以有序的进行工作或者通信(类似流水线一样,必须有节奏的运行)。 但是在芯片中,不同的模块和接口工作的频…

基于SSM的物业管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的物业管理系统2拥有三种角色 管理员:用户管理、物业管理、房产信息管理、小区概况管理、开发商管理、收费标准管理、物业公司管理等 物业:住户管理、收费…

C语言求 MD5 值

MD5值常被用于验证数据的完整性,嵌入式开发时经常用到。md5sum命令可以求MD5码,下面介绍如何用C语言实现MD5功能。 一、求字符串MD5值 1、md5sum命令 $ echo -n "12345678" | md5sum //获取"12345678"字符串的md5值 结果&…

1小时学会SpringBoot3+Vue3前后端分离开发

首发于Enaium的个人博客 引言 大家可能刚学会Java和Vue之后都会想下一步是什么?那么就先把SpringBoot和Vue结合起来,做一个前后端分离的项目吧。 准备工作 首先你需要懂得Java和Vue的基础知识,环境这里就不多说了,直接开始。 …

Neo-reGeorg明文流量

Neo-reGeorg 1 同IP对,同一个URI,第一个TCP流是“GET”请求,随后的TCP流请求为“POST”。(jsp\jspx\php) 2 第一个TCP流中,GET只有一个会话。(jsp\jspx\php),响应body79…

stm32HAL库-GPIO

一 什么是 GPIO: GPIO(general porpose intput output), 通用输入输出端口 . 二 我们先认识芯片控制 GPIO 输出控制。 2.1LED 硬件原理如图: 当电流从这根电线流通, LED 亮。当电流不通过这根电线, LED 灭。 上面 PF** ,芯片电…

平芯微PW7014中文规格书

产品概述 PW7014 具有前端过电压和过温保护功能。 支持 3V 到 36V 的宽输入电压工作范围。 过压保护阈 值可以外部设置 4V~22V 或采用内部默认 6.1V 设置。 超快的过压保护响应速度能够确保后级电路 的安全。 集成了超低导通阻抗的 nFET 开关, 确保电路系统应用更好…

如何替代传统的方式,提高能源企业敏感文件传输的安全性?

能源行业是一个关键的基础设施领域,它涉及能源的勘探、开采、生产、转换、分配和消费。随着全球经济的发展和人口的增长,能源需求持续上升,这对能源行业的可持续发展提出了挑战。能源行业的传输场景多种多样,需要重点关注能源企业…

性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法

文章目录 一、前言二、加密接口1、什么是SM22、被测接口加密逻辑 三、准备工作四、JMeter 扩展实现步骤1:准备开发环境步骤2:了解实现方法步骤3:runTest 方法步骤4:getDefaultParameters 方法步骤5:setupTest 方法 五、…

3.Docker常用镜像命令和容器命令详解

文章目录 1、Docker镜像命令1.1 获取镜像1.2 查看镜像1.2.1、images命令列出镜像1.2.2、tag命令添加镜像标签1.2.3、inspect命令查看详细信息1.2.4、history命令查看镜像历史 1.3 搜索镜像1.4 删除和清理镜像1.4.1、使用标签删除镜像1.4.2、清理镜像 1.5 创建镜像1.5.1、基于已…

LANGUAGE-DRIVEN SEMANTIC SEGMENTATION

环境不易满足,不建议复现

Google Ads广告为Demand Gen推出生成式AI工具,可自动生成广告图片

谷歌今天宣布在Google Ads广告中为Demand Gen活动推出新的生成人工智能功能。 这些工具由谷歌人工智能提供支持,广告商只需几个步骤即可使用文本提示创建高质量的图片。 这些由人工智能驱动的创意功能旨在增强视觉叙事能力,帮助品牌在YouTube、YouTube…

lesson05:C++内存管理

1.内存分布 2.c中动态内存管理 3.operator new和operator delete函数 4.new和delete实现原理 1.内存分布 1.1常见的内存分布 1.2相关问题 答案:CCCAA AAADAB 我们讲以下易错的部分: 7.数组char2是在栈上开的空间,然后将"a…

主机登录输入正确的密码后也不能正常登录

尝试登录主机发现不能登录,执行journalctl -xe 发现报错fail to start switch root,初步判断是缺少文件bash文件 拷贝文件发现磁盘空间不足,清理日志文件 然后尝试修改密码: 再次尝试登录,发现问题解决,同时…

python获取文件路径

文件:allpath_parameter.py # 获取当前目录路径 # current_dir os.getcwd() # 获取当前目录路径 realpath00 os.path.abspath(os.path.join(os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), .)) print(realpath00)# 获取当前目录的上级目录路…

C++ 并发编程 - 入门

目录 写在前面 并发编程,启动! 写在前面 计算机的并发指在单个系统里同时执行多个独立的任务。 在过去计算机内只有一个处理器时并发是通过快速的切换进程上下文所实现的,而现在计算机已经步入了多核并发时代,所以多个进程的并…

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

Kubernetes:云原生时代的核心引擎

文章目录 一、Kubernetes简介:引领云原生潮流二、K8s的核心特性:自动化与智能化三、K8s的实践应用:打造高效云原生应用架构四、K8s的挑战与应对:安全与性能并重五、K8s的未来展望:无限可能与挑战并存《Kubernetes快速进…
最新文章