如何在Scala中进行投射?

del*_*ber 47 casting scala

例如,假设我有

val myDouble = 25.7
val myInt = 5
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢

val divide = (Int) (myDouble / myInt)
Run Code Online (Sandbox Code Playgroud)

Moe*_*tar 78

你可以做到(myDouble/myInt).toInt.你也可以做toDouble,toLongtoFloat.

  • 根据Scala api for toInt:"这可能涉及舍入或截断." 那两个中的哪一个,舍入*或*截断? (4认同)
  • 只是为了添加到这个答案,如果它没有 to_ 方法,你可以使用 .asInstanceOf[T] (2认同)

par*_*tic 17

我首选的方法是添加一个舍入方法,以减少转换行为中的任何潜在的惊喜:

val divide = (myDouble/myInt).ceil.toInt
Run Code Online (Sandbox Code Playgroud)

要么

val divide = (myDouble/myInt).floor.toInt
Run Code Online (Sandbox Code Playgroud)