HarmonyOS number精度和位数限制问题

1、基础类型number保存浮点数时,是否存在像java的float,存在精度错误的情况,比如声明let num = 1.058,使用时却变成1.057999,它的精度可靠性如何?

2、基础类型number保存浮点数时,比如let num = 154151.354534354685432123121,是否存在位数限制,超过一定位数,后面的精度是否会丢失?

3、金融类应用,对数据精度要求较高的情况下,代码中使用何种类型保存、计算数据,有什么建议吗?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

JS 的number使用 IEEE 754 的双精度数表示数字,1 位符号,10 位指数,53 位底数,准确来说精度是2^53 = 9007199254740992

对于高精度数据可以使用let a = BigInt(‘855581838400261788’)

请参考js中,处理小数精度丢失的问题可以通过以下几种方法:

使用BigInt类型:BigInt是ES2020新增的一种数据类型,它可以用来表示任意精度的整数,避免了使用浮点数带来的精度问题。

将数字转换为整数进行计算:将小数乘以某个倍数后取整,得到整数后再进行计算,最后将结果除以相应的倍数即可。

使用第三方库:可以使用一些第三方库来处理浮点数精度问题,例如Math.js、Big.js等。

使用特定方法:可以使用toPrecision方法返回四舍五入长度字符串,例如,将结果在除以对应的数位实现结果。

使用特定方法:可以使用toFixed方法实现对应的长度取舍效果,但是需要注意的是,各大浏览器针对toFixed的各类结果都是不同的。

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS number字段精度丢失问题
799浏览 • 1回复 待解决
HarmonyOS JSON解析number丢失精度
405浏览 • 1回复 待解决
C++ 大整型转换到ArkTS number精度
17浏览 • 1回复 待解决
HarmonyOS 精度丢失问题
83浏览 • 2回复 待解决
HarmonyOS Long类型精度丢失问题
178浏览 • 1回复 待解决
HarmonyOS Long类型number的相互转换
139浏览 • 1回复 待解决
HarmonyOS 数据精度丢失
57浏览 • 2回复 待解决
JSON.parse数据处理导致精度丢失问题
502浏览 • 1回复 待解决
HarmonyOS string 转 number
946浏览 • 1回复 待解决
OpenIDUnionID的长度限制要求
2160浏览 • 1回复 待解决
精度优先获取定位失败
1768浏览 • 1回复 待解决
Access TokenRefresh Token长度限制要求
2129浏览 • 1回复 待解决
图片压缩指定宽高限制大小
1021浏览 • 1回复 待解决
HarmonyOS string、number扩展方法
50浏览 • 0回复 待解决