android-studio - 为什么 Kotlin toIntOrNull() 在大数上返回 null?
问题描述
我有以下代码来检查该值是否为Int
ornull
并进一步检查它是否低于某个数字:
binding.RootLayout.forEach {
if (it is EditText) {
val intOrNull = it.text.toString().toIntOrNull()
if (intOrNull == null) {
count += 1
} else if (intOrNull > 100000) {
overTheLimitExist = true
}
}
}
问题是,当我输入一些类似123456789
或以下的数字时,它会正确地将其识别为(1)Int
和(2)高于预设限制。但是,如果我输入一个更大的数字,例如12345678900
它错误地将其识别为null
.
我在网上搜索,toIntOrNull
但他们没有说明该功能的限制。
解决方案
12345678900
大于整数的最大值(2^31-1) ,因此toIntOrNull
返回 null 的实现,因为12345678900
不适合 4 个字节。
您可以使用toLongOrNull
ortoBigIntegerOrNull
来处理非常大的数字。
推荐阅读
- c# - 如何使用 Visual Studio 中的内置登录控件将现有 SQL Server 连接到 ASP.NET 表单应用程序(网站)
- php - 在 php 文件中使用 php 更改选定的选项卡(li 元素)颜色
- javascript - 如何使用 Cheerio 将抓取的数据转换为 JSON 对象
- r - 分类变量内 R 中的随机抽样
- bash - 使用 shell 脚本在 Linux 中查找现有程序的最可靠方法?
- docker - 如何控制对docker中的卷进行的文件操作?
- java - 在 Java 中使用 Kerberos 密钥表进行 HTTP 调用
- python-3.x - 来自无效参数:“值”必须是通过 Python 使用 Selenium 的 ActionChains 类的单个 Unicode 代码点错误
- graphql - 如何将graphql查询的结果作为文件发送?
- c# - 如何在 C# 中将 System.ValueType 转换为泛型类型 (T)?