Scala中Long.toInt的语义是什么?

时间:2017-03-25 13:41:25

标签: scala

如果是long.isValidInt,那么很明显,它会计算出相应的Int值。

但如果不是呢?它等同于简单地丢弃前导位吗?

1 个答案:

答案 0 :(得分:6)

  

是否等同于简单地删除前导位?

是。要验证这一点,您可以尝试或参考following section of the Scala specification

  

转换方法toByte,toShort,toChar,toInt,toLong,toFloat,toDouble,它们使用Java的数字类型转换操作规则将接收器对象转换为目标类型。转换可能会截断数值(如从Long转到Int或从Int转到Byte)或者可能会丢失精度(如从Double转到Float或在Long和Float之间转换时)。

corresponding section of the Java specification

  

有符号整数到整数类型T的缩小转换只会丢弃除n个最低位之外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关幅度的信息之外数值,这可能导致结果值的符号与输入值的符号不同。

为什么这不仅仅在toInt方法的ScalaDocs中描述,我不知道。