Java类/对象输出带(,)的double并更改小数位

时间:2019-02-27 06:58:55

标签: java class object decimal

如何在主类中输入双打,例如4,10?

如果没有,输入4.10后如何将结果打印为4,10?

此外,小数点后的零将丢失,在打印结果后,如何解决?

public static void main(String[] args){

    Pizza Rentals = new Pizza("Rentals",4.10);
    Pizza Strength = new Pizza("Strength ", 3.10);
    Pizza Molissimo = new Pizza("Molissimo", 4.20);

    System.out.println(Rentals.getName() + " (" + Rentals.getPrice() + " euros)" );
    System.out.println(Strength.getName() + " (" + Strength.getPrice() + " euros)" );
    System.out.println(Molissimo.getName() + " (" + Molissimo.getPrice() + " euros)" );

}

课程

class Pizza{

  String name;

  double price ;


  Pizza(String name, double price){

      this.name = name;
      this.price = price;
  }

  public String getName(){
      return name;
  }

  public double getPrice() {
      return price;
  }

  public String toString() {

      return super.toString() ;
  }
}

期望结果;

租金(4,10欧元) 力量(3,10欧元) 莫里西莫(4,20欧元)

2 个答案:

答案 0 :(得分:0)

对于给定的输入,解决方案之一可以是实施DecimalFormat,如下所示:

public static void main(String[] args) {

    DecimalFormat df = new DecimalFormat("#.00");
    DecimalFormatSymbols sym = DecimalFormatSymbols.getInstance();
    sym.setDecimalSeparator(',');
    df.setDecimalFormatSymbols(sym);

    Pizza Rentals = new Pizza("Rentals", 4.10);
    Pizza Strength = new Pizza("Strength ", 3.10);
    Pizza Molissimo = new Pizza("Molissimo", 4.20);

    System.out.println(Rentals.getName() + " (" + df.format(Rentals.getPrice()) + " euros)");
    System.out.println(Strength.getName() + " (" + df.format(Strength.getPrice()) + " euros)");
    System.out.println(Molissimo.getName() + " (" + df.format(Molissimo.getPrice()) + " euros)");
}

答案 1 :(得分:0)

使用java.text.MessageFormat和正确的java.util.Locale

示例为JUnit-Test:

import java.text.MessageFormat;
import java.util.Locale;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author jk
 */
public class MessageFormatTest {

     @Test
     public void hello() {
         MessageFormat fmt_EN = new MessageFormat("{0,number,#0.00}", Locale.ENGLISH);
         assertEquals("4.10", fmt_EN.format(new Object[] {4.10}));
         MessageFormat fmt_DE = new MessageFormat("{0,number,#0.00}", Locale.GERMAN);
         assertEquals("4,10", fmt_DE.format(new Object[] {4.10}));
     }
}