【问题标题】:Error: Kotlin: The floating-point literal does not conform to the expected type Float错误:Kotlin:浮点文字不符合预期的浮点类型
【发布时间】:2019-06-23 17:56:00
【问题描述】:

我在 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)

【问题讨论】:

  • 0.00 被视为Double。改为:var sum:Float=0.00ff 后缀表示Float
  • 或使用0.00.toFloat()
  • 你可以阅读数字文字here
  • 将我的评论移至答案,以便我可以添加代码并使其格式正确。请参考那个。希望对您有所帮助!
  • @Steve 非常感谢您的见解,但如果我要删除浮点规范或更确切地说是任何数据类型规范,那么 kotlin 将如何处理这些变量,在什么数据类型下?

标签: kotlin kotlin-extension


【解决方案1】:

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

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

以下是如何使用类型推断修复和简化代码类型不匹配问题的示例:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2021-08-11
    • 2020-10-08
    • 1970-01-01
    • 2016-01-03
    • 2019-04-19
    • 2018-01-11
    相关资源
    最近更新 更多