Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Преобразование BigDecimal в String только с точкой

#java


Я хочу выводить число BigDecimal как String, причём так, чтобы в выводе число было
только с точкой и двумя знаками после точки. Метод toString класса BigDecimal может
выводить число как с точкой, так и в экспоненциальной форме, например:

BigDecimal bigDecimal = new BigDecimal("13e-2");
System.out.println("Значение: " + bigDecimal.toString());


выведет


  Значение: 0.13


а

BigDecimal bigDecimal = new BigDecimal("13e-10");
System.out.println("Значение: " + bigDecimal.toString());


выведет


  Значение: 1.3E-9


Как сделать так, чтобы значение числа типа BigDecimal выводилось в строку только
с точкой?
    


Ответы

Ответ 1



BigDecimal bigDecimal = new BigDecimal("13e-50"); System.out.println("Значение: " + bigDecimal.toPlainString()); Результат: Значение: 0.00000000000000000000000000000000000000000000000013

Ответ 2



BigDecimal. как и другие числовые типы, можно по-всякому форматировать, используя стандартный Formatter. Вот цитата из его описания: Common Java types such as byte, BigDecimal, and Calendar are supported. Вот пример кода: System.out.println("Formatting BigDecimal:\n"); bd = new BigDecimal("1.234567e20"); bd = bd.divide(new BigDecimal("3"), new MathContext(60)); // To provide enough digits System.out.println("toString: " + bd); System.out.println("PlainString: " + bd.toPlainString()); System.out.println("Eng. String: " + bd.toEngineeringString()); System.out.printf ("Exponential 15: %.15e\n", bd); System.out.printf ("Exponential 5: %.5e\n", bd); System.out.printf ("Floating-point: %.5f\n", bd); System.out.printf ("General: %.5g\n", bd); System.out.println(); bd = new BigDecimal("123.4567e-20"); bd = bd.divide(new BigDecimal("3"), new MathContext(60)); System.out.println("toString: " + bd); System.out.println("PlainString: " + bd.toPlainString()); System.out.println("Eng. String: " + bd.toEngineeringString()); System.out.printf ("Exponential 15: %.15e\n", bd); System.out.printf ("Exponential 5: %.5e\n", bd); System.out.printf ("Floating-point: %.5f\n", bd); System.out.printf ("General: %.5g\n", bd); Этот код выводит Formatting BigDecimal: toString: 41152233333333333333.3333333333333333333333333333333333333333 PlainString: 41152233333333333333.3333333333333333333333333333333333333333 Eng. String: 41152233333333333333.3333333333333333333333333333333333333333 Exponential 15: 4.115223333333333e+19 Exponential 5: 4.11522e+19 Floating-point: 41152233333333333333.33333 General: 4.1152e+19 toString: 4.11522333333333333333333333333333333333333333333333333333333E-19 PlainString: 0.000000000000000000411522333333333333333333333333333333333333333333333333333333 Eng. String: 411.522333333333333333333333333333333333333333333333333333333E-21 Exponential 15: 4.115223333333333e-19 Exponential 5: 4.11522e-19 Floating-point: 0.00000 General: 4.1152e-19

Комментариев нет:

Отправить комментарий