2011-10-06 11 views
16

Powiel możliwe:
How do I format a number in java?Jak usunąć ".0" w liczbie całkowitej podczas używania podwójnego w java?

mam problemy z użyciem podwójnie. Gdy wynikiem jest liczba całkowita, wyświetli się z ".0" jak 1,0, 2,0.

Czy ktoś może mi pomóc, jak to usunąć .0 w liczbie całkowitej?

+3

Konwersja do liczby całkowitej? –

+1

Zamknięcie tego pytania jest nieprawidłowe, ponieważ nie jest to ogólne pytanie "Jak sformatować liczbę w języku Java", ale pytanie dotyczące określonego stylu formatowania. – MarianP

+1

Powinien raczej być duplikatem http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string – rds

Odpowiedz

23

Musisz użyć DecimalFormat, aby sformatować swoje podwójne.

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

'DecimalFormat (" # ")' wystarczy –

+1

@Eng. Fouad - Dzięki - tak przyzwyczaiło się do 2 miejsc po przecinku ... więc wyszło z przyzwyczajenia! – CoolBeans

+0

Czy ten kod dotyczy Androida? – 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)); 
    } 

} 

drukuje:

2 
2.11 
2,000.11 

Korzystanie

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

nie jest właściwe, ponieważ psuje z 10^10^3, 6, itd separatory.

2.000,11 będzie wyświetlany jako „2000,11” zamiast „2,000.11”

To oczywiście, jeśli chcesz wyświetlać numery odpowiednio sformatowane, nie tylko przy użyciu niewłaściwego toString().

Należy również pamiętać, że formatowanie może różnić, w zależności użytkownicy regionalnych i DecimalFormat należy odpowiednio zainicjowany przy użyciu metody fabryki z Locale użytkownika jako argument:

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 Ten formatowania string działa również bez wywoływania dodatkowej metody:

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

Dobry punkt +1 do ciebie. – CoolBeans

+0

To powinna być zaakceptowana odpowiedź. – maaw

Powiązane problemy