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

时间:2018-06-25 14:29:47

标签: scala type-conversion format double

我想在scala中将诸如1.1231053E7之类的双精度转换为11,231,053.0。当前,我转换double的方式是执行f"$number",其中number是double值。不幸的是,这只是给我一个1.1231053E7的字符串。

我可以使用NumberFormatDecimalFormat将其转换为科学计数法,但这些也迫使我选择预定的精度。我想要灵活的精度。所以...

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

...转换时应为...

1.2313215
100
333.3

目前DecimalFormat使我在构造时选择精度,例如:new DecimalFormat(##.##)#之后的每个.代表小数点。

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

1 个答案:

答案 0 :(得分: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