2011-10-06 80 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