Форматирование 0 для включения десятичных знаков с использованием DecimalFormat

import java.math.BigDecimal; 
import java.text.DecimalFormat;

public class HelloWorld{

     public static void main(String []args){
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println("two  decimals: " + new BigDecimal(df.format(123.435435))) ;
        System.out.println("zero two decimal places: " + new BigDecimal(df.format(0.0000))) ;
        System.out.println("zero without a decimal place: " + new BigDecimal(df.format(0))) ;
     }
}

Результат:

three decimals: 123.44
zero two decimal places: 0
zero without a decimal place: 0

Сейчас, DecimalFormat df = new DecimalFormat("#.##");

Это то, что широко используется в моем приложении, и у меня пока нет возможности изменить это. Как я могу напечатать 0 как 0.00 в приведенной выше программе?

2 ответа

В соответствии с форматированием Javadoc с '#' будет отображаться ноль как отсутствующий. Вместо этого вы можете использовать "0", чтобы безоговорочно отображать десятичный разряд, даже если соответствующая цифра равна нулю.

Обратите внимание, что BigDecimals используются для расчетов, где требуется высокая точность, например, в финансовых приложениях. Если вам просто нужно распечатать форматированные числа, они вам не нужны.

  DecimalFormat df = new DecimalFormat("#.##");
  DecimalFormat dfWithZeroes = new DecimalFormat("0.00");
  System.out.println("two  decimals: " + df.format(123.435435));
  System.out.println("zero two decimals: " + dfWithZeroes.format(0.0000));
  System.out.println("zero without a decimal: " + df.format(0));

С BigDecimals:

  System.out.println("two  decimals: " + new BigDecimal(df.format(123.435435)));
  System.out.println("zero two decimals: " + new BigDecimal(dfWithZeroes.format(0.0000)));
  System.out.println("zero without a decimal: " + new BigDecimal(df.format(0)));
import java.math.BigDecimal; 
import java.text.DecimalFormat;

public class HelloWorld{

public static void main(String []args){
  DecimalFormat df = new DecimalFormat("#.##");

  System.out.println("");
  System.out.println("------------Handling zero with Decimal Formatter API------------");
  System.out.println("");


  DecimalFormat dfWithZeroes = new DecimalFormat("0.0");
  System.out.println("two  decimals: " + df.format(123.435435));
  System.out.println("zero two decimals: " + dfWithZeroes.format(0));
  System.out.println("zero without a decimal: " + df.format(0));

  System.out.println("");
  System.out.println("------------Handling zero with BigDecimal API------------");
  System.out.println("");

  BigDecimal zero = BigDecimal.ZERO;
  System.out.println("Zero without scaling " + zero);
  System.out.println("Zero with scale 1: " + zero.setScale(1));
  System.out.println("Zero with scale 2: " + zero.setScale(2));
  System.out.println("Zero with scale 3: " + zero.setScale(3));
 }
}
Другие вопросы по тегам