【问题标题】:Scala can not convert expression of Double to IntScala 无法将 Double 的表达式转换为 Int
【发布时间】:2016-04-16 09:29:09
【问题描述】:

我有以下方法,它返回两点之间距离的绝对值作为Int

  def absDist(a: Tuple2[Int, Int], b: Tuple2[Int, Int]): Int = {
    ((scala.math.pow(a._1 - b._1, 2) + scala.math.pow(a._2 - b._2, 2)): Int)
  }

但是类型不能转换:

Expression of type Double doesn't conform to expected type Int

为什么会这样?我的转化看起来不错。

【问题讨论】:

  • 可能您已经知道这一点并且已经掌握了它,但是将双精度数转换为整数会导致精度损失。
  • 您不能通过在 : Int 后面加上 Double 类型的表达式将其转换为 Int。这样做与尝试将Double 值分配给Int 类型的变量相同——它不会自动转换它,并且您会从编译器中得到一个错误。显式指定类型与转换为该类型不同。请改用toInt

标签: scala casting type-conversion


【解决方案1】:

使用toInt进行类型转换:

def absDist(a: Tuple2[Int, Int], b: Tuple2[Int, Int]): Int = {
    (scala.math.pow(a._1 - b._1, 2) + scala.math.pow(a._2 - b._2, 2)).toInt
}

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 2019-08-18
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多