在Scala中无法将字符串转换为长整型

10

为什么我无法将以下字符串转换为长整型?我正在尝试在Scala中完成此操作。

var a = "153978017952566571852"

val b = a.toLong  

当我尝试转换它时,我收到了NumberFormatException(数字格式异常)

1个回答

17

因为该数字超出了长整型的限制范围,长整型的范围从-9223372036854775808到9223372036854775807,最多只能有19位数字,而您的字符串包含21个数字。


如果您不需要精确值,可以将其转换为浮点型双精度型

scala> val b = a.toFloat
b: Float = 1.5397802E20

scala> val b = a.toDouble
b: Double = 1.5397801795256658E20

5
你可以考虑使用 BigInt:BigInt("153978017952566571852") - Seth Tisue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接