Scala: преобразование двойного из научной нотации без потери точности? - PullRequest
0 голосов
/ 25 июня 2018

Я хотел бы преобразовать двойное значение, например 1.1231053E7, в 11,231,053.0 в Scala. В настоящее время я конвертирую двойные числа, делая это f"$number", где number - двойное значение. К сожалению, это просто дает мне строку с 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", он правильно обрабатывает десятичные точки, но, как я уже говорил, он не может обрабатывать научную запись.

1 Ответ

0 голосов
/ 25 июня 2018

Просто определите, сколько мест после . вам нужно, запишите число, скрывающее нули:

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
...