#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
Комментариев нет:
Отправить комментарий