gpt4 book ai didi

android - 函数在android中返回负值,但在Flutter应用中在Web上返回正值

转载 作者:行者123 更新时间:2023-12-03 03:21:55 27 4
gpt4 key购买 nike

我在Flutter中创建了一个应用,它的单位转换器具有815个以上的转换,有815个功能,当我在手机上构建并安装apk文件时,一次转换返回负整数(位转换为Yottabytes),但相同的函数返回网络上的正整数。
我已经在我的dart文件中导入了“dart:math”

double bitsToYottabytes(double n) {return n/(8*pow(10,24));}

项目源代码可在 github上获得

最佳答案

计算工作在Web上基本上是Dart Web实现的产物,在Dart Web实现中,Dart被转换为JavaScript,并允许Dart的类型抽象进行某种程度的分解。

由于8 * pow(10, 24)表达式中的值都是int文字,因此计算是使用整数算术完成的。

在网络上,Dart int由JavaScript数字原语支持,JavaScript数字原语是 double 浮点数字。

在手机上,您使用的是Dart VM,其中int始终是固定宽度的整数,具有典型的固定宽度整数限制。 Dart VM使用64位带符号整数。最大值为263-1,约为9.2×1018。您正在尝试计算更大的8×1024,因此您的计算会溢出并最终变为负值。

要解决此问题,您可以通过使用double文字强制使用浮点算法:
8 * pow(10.0, 24)
但是在这种情况下,您可以直接使用double文字,而无需进行计算:8e24

关于android - 函数在android中返回负值,但在Flutter应用中在Web上返回正值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62231153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com