You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中判断输入数字为整数或小数的实现问题

在Kotlin中判断数字是整数还是小数的解决方法

报错原因

你遇到的Operator '==' cannot be applied to 'Float' and 'Int'错误,本质是类型不匹配:number01 % 1返回的是Float类型值,而0是Int类型,Kotlin不允许不同数值类型直接用==做比较。

解决方案

下面提供几种可行的解决方式:

方法1:统一比较的数值类型

把判断条件里的0改为Float类型的0.0f,让两边类型一致:

fun main(){
    val number01 = readLine()!!.toFloat()

    if (number01 % 1.0f == 0.0f) {
        println("这是整数: $number01")
    } else {
        println("这是带小数的数字: $number01")
    } 
}

方法2:通过类型转换判断

将Float转换为Int后再转回Float,和原数比较,若相等则说明是整数(注意:超大数值可能存在精度丢失问题):

fun main(){
    val number01 = readLine()!!.toFloat()

    if (number01 == number01.toInt().toFloat()) {
        println("这是整数: $number01")
    } else {
        println("这是带小数的数字: $number01")
    } 
}

方法3:先验证输入格式再转换

如果想避免浮点类型的精度问题,可以先以字符串读取输入,先判断是否符合整数格式,再处理:

fun main(){
    val input = readLine()!!
    val intNumber = input.toIntOrNull()
    if (intNumber != null) {
        println("这是整数: $intNumber")
    } else {
        val floatNumber = input.toFloatOrNull()
        if (floatNumber != null) {
            println("这是带小数的数字: $floatNumber")
        } else {
            println("输入不是有效的数字")
        }
    }
}

注意事项

使用Float类型时要注意精度限制,比如某些十进制小数(如0.1)无法被二进制浮点类型精确存储,若需要处理高精度的小数计算,建议使用Double或BigDecimal类型。

内容的提问来源于stack exchange,提问作者learsanin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:11:08