首页 > 解决方案 > 为什么 Kotlin toIntOrNull() 在大数上返回 null?

问题描述

我有以下代码来检查该值是否为Intornull并进一步检查它是否低于某个数字:

            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但他们没有说明该功能的限制。

标签: android-studiokotlin

解决方案


12345678900大于整数的最大值(2^31-1) ,因此toIntOrNull返回 null 的实现,因为12345678900不适合 4 个字节。

您可以使用toLongOrNullortoBigIntegerOrNull来处理非常大的数字。


推荐阅读