如果是long.isValidInt,那么很明显,它会计算出相应的Int值。
但如果不是呢?它等同于简单地丢弃前导位吗?
答案 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中描述,我不知道。