Cocos如何实现这种类型游戏中的大数值效果?

上班没时间搞,下班不想搞,心血来潮时弄一弄吧,但别等我,因为也许不会有结果 :rofl:

image test.rar (32.2 KB)
image

import BigNumber from “…/…/test/bignumber”;
import 进去就ok了

1
2
3

使用姿势不对?Cocos3.7.2版本报错了,无法运行

不用导入为插件

取消勾选了,报: [PreviewInEditor] Error: Error: 以 file:///D:/Desktop/Test111/assets/test.ts 为起点找不到模块 “./test/bignumber”

Test111.rar (36.6 KB)
我尝试做测试的工程,始终运行报错

image
image

BP@VB}%K518LHX3EMV$TP(F
运行控制台报错,浏览器预览没有打印,有点懵

库文件所在文件夹改了名字,有打印了

9VNNY8X%V@ADZ0MOX7@H8D0
差不多到秭(1*10**26)后精度就会丢失了, ‘万’, ‘亿’, ‘兆’, ‘京’, ‘垓’, ‘秭’, ‘穰’, ‘沟’, ‘涧’, ‘正’, ‘载’,秭后面的单位计算错误

E前面的你取整不就好了

你那里在 let a = 5 * 10 ** 26就丢精度了

不能自己这样用乘法算

楼上正解。你的精度丢失不是bigNumber库的问题,是你初始化的a,a是一个普通的number变量,你给了它这么一个大的值,它已经是出问题的了。

我的项目是这样的,后期的物品的价格都是几载,几正的,所以我初始化的a都是比较大的值

目前的项目是这样的,后期的物品的价格都是几载,几正的,所以我初始化的a都是比较大的值,所以才这么写

初始化 你也只能用bignumber来初始化

那他就用不了bigNumber,因为初始值就超过了Number.MAX_SAFE_INTEGER

初始化一个bigNumber ,然后让这个bigNumber 乘一下。
比如1一亿亿亿
你先初始化一个bigNumber,值是一亿
然后给它乘以一亿
再乘以一亿。
这样就不会有问题了

初始值用string啊