Преобразование из экспоненциальной формы в десятичную в Java - PullRequest
5 голосов
/ 01 декабря 2009

Я хочу преобразовать экспоненциальную в десятичную. например 1.234E3 до 1234.

Ответы [ 9 ]

15 голосов
/ 01 декабря 2009

Это на самом деле не конверсия, а то, как вы отображаете число. Вы можете использовать NumberFormat , чтобы указать, как должен отображаться номер.

Проверьте разницу:

double number = 100550000.75;
NumberFormat formatter = new DecimalFormat("#0.00");

System.out.println(number);
System.out.println(formatter.format(number));
11 голосов
/ 13 декабря 2010

Как насчет BigDecimal.valueOf(doubleToFormat).toPlainString()

1 голос
/ 22 апреля 2015

При работе с двойными и длинными числами в Java вы увидите, что большая часть значений отображается в экспоненциальной форме.

Например: в следующем примере мы умножаем 2,35 на 10000 и выводим результат.

//Division example
Double a = 2.85d / 10000;
System.out.println("1. " + a.doubleValue());

//Multiplication example
a = 2.85d * 100000000;
System.out.println("2. " + a.doubleValue());

Результат:

  1. 2.85E-4
  2. 2.85E8

Таким образом, вы можете увидеть результат, напечатанный в экспоненциальном формате. Теперь вы можете отобразить результат в чистом десятичном формате, например: 0,000285 или 285000000. Это можно сделать просто с помощью класса java.math.BigDecimal. В следующем примере мы используем BigDecimal.valueOf() для преобразования значения Double в BigDecimal и затем .toPlainString() для преобразования его в обычную десятичную строку.

import java.math.BigDecimal;
//..
//..

//Division example
Double a = 2.85d / 10000;
System.out.println("1. " + BigDecimal.valueOf(a).toPlainString());

//Multiplication example
a = 2.85d * 100000000;
System.out.println("2. " + BigDecimal.valueOf(a).toPlainString());

Результат:

  1. 0,000285
  2. 285000000

Единственный недостаток вышеописанного метода заключается в том, что он генерирует длинные строки числа. Вы можете ограничить значение и округлить число до 5 или 6 десятичных знаков. Для этого вы можете использовать java.text.DecimalFormat класс. В следующем примере мы округляем число до четвертого десятичного знака и печатаем вывод.

import java.text.DecimalFormat;
//..
//..

Double a = 2.85d / 10000;
DecimalFormat formatter = new DecimalFormat("0.0000");
System.out.println(formatter .format(a));

Результат:

0,0003

Я только что попытался сжать этот код одной строкой, он напечатает значение 'a' с двумя десятичными знаками:

new DecimalFormat("0.00").format(BigDecimal.valueOf(a).toPlainString());

Счастливое преобразование:)

0 голосов
/ 13 марта 2017

Вы можете сделать:

BigDecimal
    .valueOf(value)
    .setScale(decimalLimit, RoundingMode.HALF_UP)
    .toPlainString()
0 голосов
/ 19 марта 2014

попробуйте следующее

long l;
double d;  //It holds the double value.such as 1.234E3 
l=Double.valueOf(time_d).longValue();

вы получите десятичное значение в переменной l.

0 голосов
/ 15 июня 2013
String data =  Long.toString((long) 3.42E8);
System.out.println("**************"+data);
0 голосов
/ 30 апреля 2013

просто добавьте следующий тег в jspx: -

<f:convertNumber maxFractionDigits="4" minFractionDigits="2" groupingUsed="false"/>
0 голосов
/ 06 декабря 2012

ответ от @ b.roth будет правильным, только если он специфичен для конкретной страны. Я использовал этот метод и получил проблему i18n, потому что new DecimalFormat("#0.00) принимает десятичный разделитель конкретной страны. Например, если страна использует десятичное разделение как «,», то отформатированное значение будет в 0,00 (например, 1.2e2 будет 120,00 в некоторых местах и ​​120,00) в некоторых местах из-за проблемы i18n, как сказано здесь ..

метод, который я предпочитаю, это `(новый BigDecimal (" 1.2e2 "). ToPlainString ())

0 голосов
/ 01 декабря 2009

вы можете превратить его в строку, используя DecimalFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...