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)。

解决方法:

  1. 使用BigInt类型:
console.log(30n * 24n * 60n * 60n * 1000n)
  1. 分步计算避免溢出:
const dayMs = 24 * 60 * 60 * 1000 // 86400000
console.log(30 * dayMs)
  1. 使用科学计数法:
console.log(30 * 8.64e7)
回到顶部