uni-appX数学运算提示内存溢出,导致计算错误
uni-appX数学运算提示内存溢出,导致计算错误
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 22000.2295 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:22000.2295
HBuilderX类型:Alpha
HBuilderX版本号:3.93
手机系统:Android
手机系统版本号:Android 14
手机厂商:小米
手机机型:red mi 8
页面类型:vue
vue版本:vue3
打包方式:云端
操作步骤:
onLoad() {
console.log(30 * 24 * 60 * 60 * 1000)
},
预期结果:
2,592,000,000
实际结果:
-1702967296
bug描述:
计算一个月有多少毫秒。
项目是uni-app-x和uts
代码如下:
onLoad() {
console.log(30 * 24 * 60 * 60 * 1000)
},
提示错误:
warning: This operation has led to an overflow
运算结果为:
[Number] -1702967296
想确定下这个是不是bug,还是我写错了?
更多关于uni-appX数学运算提示内存溢出,导致计算错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
好吧,没人教我,自己研究出来了,改成这样就可以了。
console.log(30 * 24 * 60 * 60 * 1000.0)
更多关于uni-appX数学运算提示内存溢出,导致计算错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
问题已确认: 超出整型范围的计算结果异常。
稍后版本会修复。
临时解决办法: 先手动乘以1.0切换到浮点数运算。
这是JavaScript/TypeScript中常见的整数溢出问题,不是uni-appX特有的bug。问题出在计算时超过了32位有符号整数的最大值(2,147,483,647)。
解决方法:
- 使用BigInt类型:
console.log(30n * 24n * 60n * 60n * 1000n)
- 分步计算避免溢出:
const dayMs = 24 * 60 * 60 * 1000 // 86400000
console.log(30 * dayMs)
- 使用科学计数法:
console.log(30 * 8.64e7)