在java中使用double时,如何删除整数中的“ .0”?

2022-09-01 17:56:43

可能的重复:
如何在java中格式化数字?

我在使用Double时遇到问题。当结果是整数时,它将显示为“.0”,如1.0,2.0。

任何人都可以帮我如何在整数中删除.0吗?


答案 1
import java.text.DecimalFormat;


public class Asdf {

    public static void main(String[] args) {
        DecimalFormat format = new DecimalFormat();
        format.setDecimalSeparatorAlwaysShown(false);

        Double asdf = 2.0;
        Double asdf2 = 2.11;
        Double asdf3 = 2000.11;
        System.out.println( format.format(asdf) );
        System.out.println( format.format(asdf2) );
        System.out.println( format.format(asdf3) );
    }

}

指纹:

2
2.11
2,000.11

DecimalFormat format=new DecimalFormat("#.#"); //not okay!!!

不正确,因为它弄乱了10 ^ 3,10 ^ 6等分隔符。

2000.11 将显示为“2000.11”而不是“2,000.11”

当然,这是如果你想显示格式正确的数字,而不仅仅是使用不正确的toString()。

另请注意,格式可能会因用户 Locale 而异,并且应使用以用户的区域设置作为参数的工厂方法相应地初始化 DecimalFormat:

NumberFormat f = NumberFormat.getInstance(loc);
 if (f instanceof DecimalFormat) {
     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
 }

http://download.oracle.com/javase/1.5.0/docs/api/java/text/DecimalFormat.html

更新此格式化字符串也可以正常工作,而无需调用额外的方法:

    DecimalFormat format=new DecimalFormat("#,###.#");
   //format.setDecimalSeparatorAlwaysShown(false);

答案 2

您需要使用十进制格式来格式化双精度格式。

public static void main(String[] args) {
      DecimalFormat decimalFormat=new DecimalFormat("#.#");
      System.out.println(decimalFormat.format(2.0)); //prints 2
}

推荐