Error: Kotlin: The floating-point literal does not conform to the expected type Float

Error: Kotlin: The floating-point literal does not conform to the expected type Float

我正在用 kotlin 制作一个简单的数学计算器,当我尝试将其中一个变量的值初始化为浮点整数的 0.00 时,屏幕上出现错误。

var x:Float= readLine()!!.toFloat()
var y:Float= readLine()!!.toFloat()
var sum:Float=0.00// the error message is showcased in this line
sum=x+y
println("Addition " + sum)

这是 Java 和 Kotlin 之间的主要区别。 Kotlin 不像 Java 那样进行数字类型提升。对您问题的评论向您展示了如何处理这个问题,方法是首先匹配两种类型 Double and/or Float ,或者通过显式转换一种或另一种类型以使两种类型匹配。

如果您利用 Kotlin 的能力通过从变量定义中删除类型规范来推断变量类型,那么您的问题就会消失。 Kotlin 推断类型这一事实是它不推广数字类型的原因之一。将两者混合会导致很多混乱。

下面是一个示例,说明如何使用类型推断修复和简化代码的类型不匹配问题:

var x = readLine()!!.toFloat()
var y = readLine()!!.toFloat()
var sum = x + y
println("Addition " + sum)

我知道这可能只是您用来更好地理解 Kotlin 的测试代码。话虽如此,我要指出的是,如果您的用户输入 non-numeric,此代码将会崩溃。您可以通过在输入行周围放置一个 try/catch 并提供一个很好的错误消息来解决这个问题。您可能希望将每个输入置于一个循环中,继续请求输入,直到用户确实提供了预期格式的响应。