Как преобразовать строку 3.0103E-7 в 0.00000030103 в Java? - PullRequest
1 голос
/ 04 августа 2009

Как преобразовать строку 0E-11 в 0.00000000000 в Java? Я хочу отобразить число в ненаучных обозначениях. Я попытался взглянуть на средство форматирования чисел в Java, однако мне нужно указать точное количество десятичных знаков, которое я хочу, но я не всегда буду знать. Я просто хочу количество знаков после запятой, как указано в моем исходном числе.

Ответы [ 5 ]

9 голосов
/ 04 августа 2009

Видимо, правильный ответ для пользователя BigDecimal и получить точные и масштабные числа. Затем используйте эти числа в программе форматирования. Примерно так:

BigDecimal bg = new BigDecimal(rs.getString(i));
Formatter fmt = new Formatter();
fmt.format("%." + bg.scale() + "f", bg);
buf.append( fmt);
4 голосов
/ 13 сентября 2016

Использование BigDecimal:

public static String removeScientificNotation(String value)
{
    return new BigDecimal(value).toPlainString();
}

public static void main(String[] arguments) throws Exception
{
    System.out.println(removeScientificNotation("3.0103E-7"));
}

Печать:

0.00000030103
3 голосов
/ 04 августа 2009

Я бы использовал BigDecimal.Pass вашу строку в него в качестве параметра, а затем использовал String.format для представления вашего недавно созданного BigDecimal без научной нотации. Также можно использовать классы Float или Double.

2 голосов
/ 21 декабря 2015
double d = Double.parseDouble("7.399999999999985E-5");
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
System.out.println(f);    // output --> 0.00007
0 голосов
/ 04 августа 2009

Я не пробовал, но java.text.NumberFormat может делать то, что вы хотите.

...