Форматирование 0 для включения десятичных знаков с использованием DecimalFormat - PullRequest
0 голосов
/ 28 марта 2020
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 ]

1 голос
/ 28 марта 2020

В соответствии с форматированием Javado c с '#', нулевое значение будет отсутствовать. Вместо этого вы можете использовать «0», чтобы безоговорочно отображать десятичное место, даже если значение di git равно нулю.

Обратите внимание, что 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)));
0 голосов
/ 28 марта 2020
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));
 }
}
...