2011-10-06 47 views
16

可能重复:
How do I format a number in java?如何在java中使用double时去除整数中的“.0”?

我在使用双重问题。当结果是一个整数时,它将显示一个“.0”,如1.0,2.0。

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

+3

将其转换为整数? –

+1

这个问题的结束是不正确的,因为它不是一个通用的“如何在Java中格式化数字”的问题,而是一个关于特定格式风格的问题。 – MarianP

+1

它应该是一个重复的http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string – rds

回答

23

您需要使用DecimalFormat格式化双精度。

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

'DecimalFormat(“#”)'就够了 –

+1

@Eng。 Fouad--谢谢 - 习惯于有2个小数点。所以它出于习惯! – CoolBeans

+0

此代码是否适用于android? – ikzton

36
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()。

还要注意,格式可能不同的基于用户的语言环境和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

UPDATE 此格式字符串正常工作也没有调用额外的方法:

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

对你有好处+1。 – CoolBeans

+0

这应该是被接受的答案。 – maaw