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

问题描述 投票:0回答:1

我想在qala中将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",它会正确处理小数点,但就像我之前说过的那样,它无法处理科学记数法。

scala type-conversion format double
1个回答
0
投票

只需确定你需要的.之后的位数,写出隐藏零的数字:

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
© www.soinside.com 2019 - 2024. All rights reserved.