2012-05-08 6 views
8

Ich möchte nur den Bruchteil einer Gleitkommazahl, die .0 enthält, entfernen. Alle anderen Zahlen sind akzeptabel .. Zum Beispiel:So entfernen Sie den Dezimalteil von einer Gleitkommazahl, die 0 in Java enthält

I/P: 1.0, 2.2, 88.0, 3.56666, 4.1, 45.00 , 99.560 
    O/P: 1 , 2.2, 88, 3.567, 4.1, 45 , 99.560 

Gibt es eine Methode zur Verfügung zu tun, dass andere alsVergleich Nummer mit“ 0,0" und Teilzeichen Einnahme "?

EDIT: ich nicht ACTING Gleitkommazahlen wollen (wie 1.0, 2.0 ist nichts anderes als 1 2 richtig?)

ich meine Frage fühlen, ist etwas verwirrend ...
Hier ist meine Klarstellung: Ich Ich möchte nur eine Reihe von Fließkommazahlen für den Benutzer anzeigen. Wenn der Bruchteil einer Zahl Null ist, dann zeige nur den ganzzahligen Teil an, ansonsten zeige die Zahl so an, wie sie ist. Ich hoffe, es ist jetzt klar ..

+0

"mit der Nummer Vergleich '' 0,0 '' und Teilzeichen Einnahme" nicht "45.00" bis "45" konvertieren. Möchten Sie eine beliebige Anzahl von Nullen vom Ende entfernen? –

+0

Werfen Sie einen Blick auf diese: http://StackOverflow.com/Questions/703396/How-To-Nicely-Format-Floating-Types-To-String –

+0

Müssen Sie die schleppende 0 auf '99 .560 'oder würde' 99.56 'OK? – NickT

Antwort

8

Sie könnten einen regulären Ausdruck wie folgt aus: \\.0+$. Wenn nur Nachkommastellen vorhanden sind, liefert dieser reguläre Ausdruck true.

Eine andere Sache, die Sie könnten, ist so etwas wie so:

float x = 12.5; 
float result = x - (int)x; 
if (result != 0) 
{ 
    //If the value of `result` is not equal to zero, then, you have a decimal portion which is not equal to 0. 
} 
+0

ich werde mir das mal anschauen – vnshetty

+0

danke dafür, schnell und effizient ^^ Unter Android habe ich float remains = floatval - FloatMath.floor (floatval); – Darkendorf

0

Nun, technisch gesehen der Anzeigeteil Text ist, so könnte man es mit regulären Ausdrücken zu tun. Wenn die Zahl übereinstimmt, verwenden Sie Gruppen, um das korrekte Teil zu extrahieren. (Ich werde später die Post mit einer Lösung aktualisieren.)

Alternativ können Sie einfach gehen:

if ((int)Math.round(number) == number) { 
    System.out.println((int) number) 
} else { 
    System.out.println(number) 
} 

oder sogar:

System.out.println((int) Math.round(number) == number ? 
    String.valueOf((int) number) : String.valueOf(number)); 

vorsichtig, die String.valueOf() ist erforderlich, da dies nicht funktioniert. Die System.out.println (double) wird immer noch ausgeführt werden, das heißt, die unten nicht funktioniert:

System.out.println((int)Math.round(number) == number ? (int) number : number); 
+0

-1 Ihre letzte Druckanweisung (mit dem Tertiäroperator) funktioniert nicht, da 'println (double)' immer aufgerufen wird. – dogbane

+0

Ich verstehe nicht ... wie bekommst du das? –

+0

Einverstanden, du hast Recht ... Ich bin mir nicht sicher warum. –

9

Versuchen:

String.format("%.0f",value); 
3

Wenn Android gibt Ihnen Zitronen. Werfen Sie es nicht.

YourFormatedStringNumber = NumberFormat.getInstance().format(myNumber); 

makes -> "12.50" to "12.50" and "12.00" to "12" 

More here in doc.

+1

Genau das möchte ich tun! Fantastisch –

0

try Casting int vor der Float-Zahl

+0

Bitte Sehen Sie dies zuerst, bevor Sie antworten. [link] (https://stackoverflow.com/help/how-to-answer) –

Verwandte Themen