Decimal.js 完全指南:解决前端数值精度痛点的核心方案

Decimal.js 完全指南:解决前端数值精度痛点的核心方案

Decimal.js 完全指南:解决前端数值精度痛点的核心方案

夸克资源分享:
表情包:https://pan.quark.cn/s/5b9ddeb237fe
工具箱:https://pan.quark.cn/s/aa2d6a730482,图吧、美蛋、路遥、入梦等
Fiddler Everywhere抓包:https://pan.quark.cn/s/6b1e2fbae019
Adobe:https://pan.quark.cn/s/13e39cfeaadb,先看安装教程
JetBranis开发者工具:https://pan.quark.cn/s/16e94dcff1f7,先看安装教程下的jetbra教程
逆向工具:https://pan.quark.cn/s/50e93c8ca54c
数据库工具:https://pan.quark.cn/s/2f14eda13d24
kettle:https://pan.quark.cn/s/62f320634c75
前端项目搭建集锦:https://blog.ZEEKLOG.net/randy521520/article/details/146998467
前端接单》前端接单 》前端接单:https://www.goofish.com/item?id=1008883794643

一、简介

Decimal 是为解决原生 Number 类型精度缺陷而生的高精度数值处理方案。前端原生 Number 遵循 IEEE 754 双精度浮点数标准,无法精确表示 0.1、0.2 等十进制小数,导致 0.1+0.2=0.30000000000000004 这类精度偏差,这在高精度敏感场景中是不可接受的,Decimal 由此成为核心解决方案。
需要注意的是,前端无内置 Decimal 类型,需依赖第三方库实现,主流选择包括功能全面的 decimal.js、轻量简洁的 bignumber.js 以及轻量化的 decimal.js-light。使用时需先通过 npm 或 yarn 安装,初始化实例时推荐传入字符串格式的数值(避免原生 Number 提前丢失精度),再通过库提供的方法完成高精度运算,运算后可通过 toString、toFixed 等方法实现格式转换与格式化。
Decimal 的核心优势在于以十进制存储数值,彻底规避二进制转换带来的精度偏差,且实例具有不可变性,运算后返回新实例,保证数据安全。其典型应用场景集中在金融财务(金额计算、转账结算)、税务计算(税率换算、应纳税额统计)等对精度要求极高的领域。使用时需注意避免入参为原生不精确 Number、避免混合类型运算,按需选择合适的库即可满足各类高精度需求。
官网地址:https://mikemcl.github.io/decimal.js/

二、安装

yarn install decimal.js 

三、原生精确度与Decimal对比

1.四则运算、取余精确度差异

在这里插入图片描述
import Decimal from'decimal.js'; console.log('==============加法==============');const nativeAdd =0.1+0.2;const decimalAdd1 = Decimal.add('0.1','0.2');// 静态方法const decimalAdd2 =newDecimal('0.1').plus('0.2');// 实例方法(plus 对应加法) console.log('原生 JS 结果:', nativeAdd);// 输出:0.30000000000000004(错误) console.log('Decimal 静态方法结果:', decimalAdd1.toString());// 输出:"0.3"(正确) console.log('Decimal 实例方法结果:', decimalAdd2.toString());// 输出:"0.3"(正确) console.log('\n==============减法==============');const nativeSub =1.0-0.9;const decimalSub1 = Decimal.sub('1.0','0.9');const decimalSub2 =newDecimal('1.0').sub('0.9'); console.log('原生 JS 结果:', nativeSub);// 输出:0.09999999999999998(错误) console.log('Decimal 静态方法结果:', decimalSub1.toString());// 输出:"0.1"(正确) console.log('Decimal 实例方法结果:', decimalSub2.toString());// 输出:"0.1"(正确) console.log('\n==============乘法==============');const nativeMul =0.07*100;const decimalMul1 = Decimal.mul(0.07,100);const decimalMul2 =newDecimal(0.07).mul(100); console.log('原生 JS 结果:', nativeMul);// 输出:7.000000000000001(错误) console.log('Decimal 静态方法结果:', decimalMul1.toNumber());// 输出:7(正确) console.log('Decimal 实例方法结果:', decimalMul2.toNumber());// 输出:7(正确) console.log('\n==============除法==============');const nativeDiv 

Read more

Floweb 强大的超轻量浮动浏览器 | 终身授权 38.88

Floweb 强大的超轻量浮动浏览器 | 终身授权 38.88

今日给大家介绍的是一款浮动浏览器 WebApp 工具软件,方便需要经常开多页面的用户。 Floweb 简介 Floweb 是一款超轻量级的浮动浏览器,能够将网站转化为桌面一个个挂件的集合式浏览器。它支持将任意网站变成小窗口浏览,让您像使用本地应用程序一样快速启动和运行网页,大幅提升日常操作的便捷性和效率。无论是监控实时数据、管理多个账号,还是进行网站测试,Floweb 都能满足您的需求。 目前支持平台:Windows、macOS ☺️ 为什么使用 Floweb? Floweb 通过将网页转化为桌面应用,让您告别频繁切换浏览器标签的烦恼。无论是需要同时管理多个社交账号、监控股票价格、跟踪新闻更新,还是进行网站测试,Floweb 都能为您提供专业、高效的解决方案。 🌐WebApps - 网页即应用 将常用的网站或服务,如电子邮件、社交媒体、在线文档、项目管理工具等,快速添加到桌面,实现一键访问。一个 URL 就是一个 WebApp,操作简单直接,让您轻松将常用网页转化为便捷的应用形式。 便捷定义: * 可自动获取网站的高清

vue2纯前端对接海康威视摄像头实现实时视频预览

vue2纯前端对接海康威视摄像头实现实时视频预览

vue2纯前端对接海康威视摄像头实现实时视频预览 * 一、环境准备 * 二、代码集成 * 1.1 准备webrtcstreamer.js,粘贴即用,不用做任何修改 * 1.2 封装视频组件,在需要视频的地方引入此封装的视频组件即可,也是粘贴即用,注意其中import的webrtcstreamer.js的地址替换为自己的 * 1.3 以上完成之后,需要观看视频的本地PC设备启动webrtc-streamer插件 实现实时对海康威视摄像头进行取流的大致思路:摄像头做端口映射(安装摄像头的师傅一般都会),做了映射之后就可以通过IP+端口的形式在浏览器中进行摄像头的实时浏览,这种是海康威视自己就带有的方式,不能嵌入到自研的系统,视频流画面实现嵌入自研系统,需要在满足以上的前提下,使用webrtc-streamer进行推流,然后在vue2中进行接流,渲染到页面中 一、环境准备 需要具备的前提条件,设备可在网页端进行浏览,且做以下设置 至此摄像头设置已完成,接下来需要获取摄像头设备所在IP的rtsp链接,海康摄像头的rtsp链接获取见官方说明:

SHCTF 3rd - [WEB]部分writeup

SHCTF 3rd - [WEB]部分writeup

SHCTF-[WEB]部分writeup * 法律与道德使用声明 * 比赛地址 * [阶段1] ez-ping * 靶机展示 * payload * 源码过滤+getshell * [阶段2] Mini Blog * 靶机展示 * 简单信息收集 * 攻击思路 * PAYLOAD * get flag * [阶段3] 你也懂java? * 靶机展示 * 网页源码 * Note.jar * 攻击思路 * 创建恶意类 * 设置JDK环境 * 编译恶意类 * 修改恶意类尝试得到flag * 利用 python 直接发payload * 更加偷懒的方法 * [阶段2] Go * 靶机展示 * 过waf+get flag * [阶段1] 上古遗迹档案馆 * 靶机展示 * SQL注入 * [阶段1] kill_king * 靶机展示 * 攻击思路

什么是移动端 H5 开发?它和 PC 端 Web 开发有什么区别?

移动端 H5 开发与 PC 端 Web 开发的区别 什么是移动端 H5 开发 移动端 H5 开发是指使用 HTML5、CSS3 和 JavaScript 技术栈,专门为移动设备(智能手机、平板电脑)开发网页应用的过程。H5 是 HTML5 的简称,是构建移动端网页的核心技术标准。 H5 开发的特点 ┌─────────────────────────────────────────────────────────┐ │ 移动端 H5 开发 │ ├─────────────────────────────────────────────────────────┤ │ 技术栈: HTML5 + CSS3 + JavaScript │ │ 运行环境: 移动浏览器 (Safari, Chrome, 微信内置浏览器等) │ │ 交互方式: 触摸、手势、传感器 │ │ 屏幕尺寸: 小屏幕、多分辨率 │ │ 网络环境: 移动网络