我想在scala中将诸如1.1231053E7
之类的双精度转换为11,231,053.0
。当前,我转换double的方式是执行f"$number"
,其中number
是double值。不幸的是,这只是给我一个1.1231053E7
的字符串。
我可以使用NumberFormat
或DecimalFormat
将其转换为科学计数法,但这些也迫使我选择预定的精度。我想要灵活的精度。所以...
val number1 = 1.2313215
val number2 = 100
val number4 = 3.333E2
...转换时应为...
1.2313215
100
333.3
目前DecimalFormat
使我在构造时选择精度,例如:new DecimalFormat(##.##)
。 #
之后的每个.
代表小数点。
如果我使用f"$number"
,它将正确处理小数点,但是,就像我之前说的那样,它无法处理科学计数法。
答案 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