JS中小数计算时获取正确结果

news/2024/11/19 12:28:51/文章来源:https://www.cnblogs.com/ricardox3/p/18433645

JS中,所有数字都以双精度64位浮点格式表示,因此部分小数进行计算时,会出现无法预测的长小数结果,导致无法得到想要的结果。

为了避免这种现象出现,可以使用个简单方法转换后再进行计算,即将数字放大为整数后计算再等比缩小

那关键就在于获取小数精度位,以下是方法代码:

function getPrecision(num) {let str = num.toString()return Math.pow(10, str.split('.')[1].length)
}

先将数字转换为字符串,然后再转换为数组,因为有小数,所以数组第二项必定为小数部分;

然后获取这串“字符串”的长度,再应用Math.pow(x, y)函数(计算x的y次方)获取需要缩放的倍数,就可以了。

 

注意:若是一元运算,请对每一个参数调用并算出最大值,使用最大倍数进行计算;

若是小数部分精度过高,转换后的整数值过大,那么需要转换为BigInt类型,再数字末尾加上n或者使用BigInt构造即可。

 不过因为BigInt只有整型,而过高精度的小数也无法正确保留其数值,所以如果位数实在太高的话那就没办法了(交给后端吧!)

 

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

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

相关文章

博客园终身会员小福利,送华为云服务器

最近我们和华为云总经销商浙江杭云网络科技有限公司达成了合作,准备从10月开始做一些华为云的代理业务,增加园子的收入来源。 在做这个业务之前,先给园子的终身会员送点华为云服务器作为小福利,这次只申请到100台,先到先得,送完为止。 赠送的云服务器配置如下:终身VIP会…

Meta公布首款AR眼镜Orion,成本1万美元;OpenAI CTO Mira Murati离职丨RTE开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

Java基础-学习笔记18

反射机制、反射相关类、反射性能优化18 反射 1. 反射机制反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息(比如成员变量、构造器、成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到;加载完类之后,在堆中就产生了一个 Class …

ECU电控软件开发及测试介绍

本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。 伴随着电动化、智能化、网联化等技术发展的时代背景,各行各业电子电气架构都在发生深度变革。新型架构逐渐取代传统架构,比如汽车、工程机械、…

BladeX开发入门(记录)

BladeX 物联网平台是一款高度集成的物联网解决方案,涵盖设备管理、数据采集、实时监控、数据分析以及开放API服务等核心功能。 平台经过精心设计与开发,提供了全面的品类、产品和设备支持。设备注册成功后,能够轻松桥接至其他物联网云平台,实现设备的无缝集成。 同时提供服…

RabbitMq 入门应用 提升性能 : 算法多阶段并行 (Python)

大问题: 我们有一个算法,它可以被分为多个阶段进行(顺序不可颠倒),每个阶段的性能和资源要求不同(且不均衡程度比较高); 假设我们现在可以堆资源(较多的CPU和内存),如何将算法各个步骤拆分并进行性能均衡和实现,使得算法性能最大化以满足生产要求? 多进程: 由于算法有严…

Github使用技巧

1、怎么查找对应关系 一般查找对应关系,可以去阅读下面的说明: 2、0.20.Release版本不存在的问题如上图:根本不知道0.2.1.RELEASE对应的dubbo-spring-boot-start版本是多少,在maven仓库中根本没有这个版本 解释:这里需要我们点击这个版本,然后就会跳转到这个代码上,如…

微信小程序修改radio颜色

看效果: 代码:<radio-group @change="onRadioChange"><label><radio value="同意" style="margin-right: 30rpx">同意</radio></label><label><radio value="不同意">不同意</radio&g…

springboot对接dubbo遇到的巨坑

1、添加配置jar包<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.4.1</version></dependency><dependency><groupId>org.apache.dubbo</gr…

一款高性价比4g工业路由器,配置简单,网络覆盖强

​各位老铁,今天给大家介绍一下SR600这款工业级4G路由器。这玩意儿是专门为工业环境设计的,比如说化工厂、矿场这种恶劣环境,普通路由器根本扛不住。先说说SR600的硬件配置:处理器: 工业级CPU,厂家没透露具体型号,但性能够用内存: 128MB,满足工业控制需求存储: 16MB Flash,可扩…

VS Code 的SSH连接不成功问题分析与解决

问题描述:多次输入密码,一直连接不上 解决方法; 打开远程服务器中~/.vscode-server/bin/xxx文件夹,此时可以看到一个名为vscode-server.tar.gz,截图如下:上面的37开头的文件夹称为Commit Id,现在利用Commit ID下载远程连接需要的文件。使用这个链接: https://update.cod…

「FJWC2020Day5-zzq」rng 题解

题意简述 一个长度为 \(n\) 的实数序列 \(a_i\),其中 \(a_i\) 为 \([l_i, r_i]\) 中独立均匀随机选取的实数。你只能通过交换相邻两个数,使得 \(a_i\) 单调不降。你需要求出你最少操作次数的期望,对 \(M = 998244353\) 取模。 \(1 \leq n \leq 10^6\),\(0 \leq l_i \lt r_i…