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

ikz*_*ton 22 java double android

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

我在使用Double方面遇到了问题.当结果是整数时,它将显示"1.0",如1.0,2.0.

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

Mar*_*anP 47

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) );
    }

}
Run Code Online (Sandbox Code Playgroud)

打印:

2
2.11
2,000.11
Run Code Online (Sandbox Code Playgroud)

运用

DecimalFormat format=new DecimalFormat("#.#"); //not okay!!!
Run Code Online (Sandbox Code Playgroud)

是不对的,因为它与10 ^ 3,10 ^ 6等分离器混淆.

2000.11将显示为"2000.11"而不是"2,000.11"

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

另请注意,基于用户的格式可能不同Locale和DecimalFormat应使用工厂方法相应地初始化,并使用用户的Locale作为参数:

NumberFormat f = NumberFormat.getInstance(loc);
 if (f instanceof DecimalFormat) {
     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
 }
Run Code Online (Sandbox Code Playgroud)

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

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

    DecimalFormat format=new DecimalFormat("#,###.#");
   //format.setDecimalSeparatorAlwaysShown(false);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。 (3认同)

Coo*_*ans 27

您需要使用DecimalFormat来格式化double.

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

  • `DecimalFormat("#")`就足够了 (3认同)
  • @ Eng.Fouad不,不是.他没有说他想删除十进制数字.2.0应该变为2,1.1应该变为2.1,而不是2 (2认同)

mbe*_*ish 3

设置您显示的字符串的格式。