Scala:在不损失精度的情况下从科学记数法转换双精度?



我想在 scala 中将双精度(如1.1231053E7(转换为11,231,053.0。目前,我转换双精度值的方式是f"$number"这样做,其中number是双精度值。不幸的是,这只是给了我一个带有1.1231053E7的字符串.

我可以使用NumberFormatDecimalFormat将其从科学记数法中转换出来,但这也迫使我选择预定的精度。我想要灵活的精度。所以。。。

val number1 = 1.2313215
val number2 = 100
val number4 = 3.333E2

。转换时应该是...

1.2313215
100
333.3

目前DecimalFormat让我在施工过程中选择精度,如下所示:new DecimalFormat(##.##)..后的每个#表示一个小数点。

如果我使用f"$number",它会正确处理小数点,但就像我之前说的,它无法处理科学记数法。

只需确定.后需要多少个位置,写出隐藏零的数字:

val fmt = new java.text.DecimalFormat("#,##0.##############")
for (x <- List[Double](1.2313215, 100, 3.333E2)) println(fmt.format(x))

指纹:

1.2313215
100
333.3

最新更新