java - AndroidStudio/Flutter 中奇怪的循环数
问题描述
我刚刚在 AndroidStudio 中玩过,遇到了这个号码:8198552921648689606
我的代码如下所示:
int x = 1;
for (int i = 0; i<64; i++)
{
x++;
x *= 10;
}
print(x);
出于某种原因,它卡在了这个奇怪的数字上。我希望它会在整数线上跳来跳去,但对于 64 以上的所有数字,它就保持这样。
它只发生在数字 10 或 100 或 1000(或我假设的任何 10 因子)作为一个因子,它也发生在 Java 中。
它卡住的数字根据位系统的类型和使用的数字而变化,但它一直卡住。
关于整数线似乎是一个奇怪的巧合,但我真的很想知道发生了什么。
更新:似乎偶数因素会发生,但奇数因素不会。尽管如此,我仍然无法理解这一点。
解决方案
我不太了解您要做什么,但这是发生的事情:
首先,如果您想遵循“x”变量中值的“转换”,您应该print
在循环中包含以下语句:
for (int i = 0; i<64; i++)
{
x++;
x *= 10;
print(x); // <- inserted in here
}
print(x);
其次,如果你这样做,你应该能够看到这种情况:
一世 | X | (在“x++”之后) | 之后 ( x *= 10) |
---|---|---|---|
1 | 1 | 2 | 20 |
2 | 20 | 21 | 210 |
3 | 210 | 211 | 2110 |
... | ... | ... | ... |
当i = 63时,您的X将为=2111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111朗得库来证级岁(2.1*10^127)。请注意,此数字远大于Java 的 int 限制2147483647
推荐阅读
- controller - Laravel 中的 PayPal 沙盒
- android - 如何模拟同伴lateinit var?
- git - 有没有办法在 intellij 中使用 git push-option?
- react-native - 在 ubuntu 上使用 react js 应用程序
- javascript - 如何使用获取所选文件的完整路径
- python - Python - 计算字典列表中字典值出现次数的最佳方法?
- javascript - 执行ajax发布请求后如何重新加载网页?
- python - 用于在 Django Rest Framework 中创建用户配置文件的序列化程序
- sql - 在 SQL 中查找字符串值的相同部分
- python - Python套接字绑定((主机,端口))