double 3.0 soll ohne Nachkommastelle ausgegeben werden

Status
Nicht offen für weitere Antworten.

julchen81

Bekanntes Mitglied
Guten Morgen!

Ich möchte double-Variablen ausgeben. Allerdings hätte ich gerne, dass wenn der Wert der Variablen mit ".0" endet (also keine Nachkommastellen hat), dann dieses Ende nicht gezeigt wird.

Beispiel:
double i = 3.1
double j = 4.0

System.out.println("i = " + i); //gewünschte Ausgabe: i = 3.1
System.out.println("j = " + j); //gewünschte Ausgabe: j = 4

Alle meine Ideen sind sehr umständlich, vielleicht hat jemand eine bessere? :wink:

Liebe Grüße,
Julia
 
Z.B. den Double-Wert in 2 Teile zu zerlegen (Vorkommastellen und Nachkommastellen), dann den Nachkommateil überprüfen (ob = "0") und falls true, dann meine Double-Variable auf int casten.

Oder eine zweite Variable vom Typ double erstellen, mit der ersten gleichsetzen, die zweite dann auf int casten und von der ersten abziehen. Wenn das Ergebnis gleich 0 ist, dann weiß ich, dass die Endung .0 war und ich kann meine Variable auf int casten.

Praktisch und schnell ist was Anderes :?

Julia
 
@verjigorm

Es sollen nur die Werte ohne Kommastelle angezeigt werden, die auf .0 enden! Deine Lösung schneidet mir auf alle Fälle den Nachkommateil ab, und das darf nicht sein 🙁


Viele Grüße,
Julia
 
Man wird wohl um eine Fallunterscheidung nicht herumkommen. Wie wäre es mit:

Code:
double number = ....;

DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df0 = new DecimalFormat("0");

.
.
.

if(number%1.0d==0.0d)
     System.out.println(df0.format(number));
else
     System.out.println(df1.format(number));

Ciao
 
Code:
DecimalFormat decimalFormat = new DecimalFormat("0.########");
		
		double i = 3.1d; 
		double j = 4.0d; 
		 
		System.out.println(i);
		System.out.println(j);
		 
		System.out.println(decimalFormat.format(i));
		System.out.println(decimalFormat.format(j));
wobei hier jetzt das länderspecifische decimal trennzeichen ausgegeben wird also ein , - is das ein problem?
 
jaja genau:

Code:
DecimalFormat decimalFormat = new DecimalFormat("0.########", DecimalFormatSymbols.getInstance(Locale.ENGLISH));

		double i = 3.1d; 
		double j = 4.0d; 

		System.out.println(i);
		System.out.println(j);

		System.out.println("mit formater");
		System.out.println(decimalFormat.format(i));
		System.out.println(decimalFormat.format(j));

jetzt mit .
 
julchen81 hat gesagt.:
@verjigorm

Es sollen nur die Werte ohne Kommastelle angezeigt werden, die auf .0 enden! Deine Lösung schneidet mir auf alle Fälle den Nachkommateil ab, und das darf nicht sein 🙁


Viele Grüße,
Julia

oh, nicht genau durchgelesen 🙂

System.out.println(new Double(j).toString().replaceAll(".0", ""));
so ginge es auch, wenn du NUR auf die richtige AUSGABE scharf bist
 
toll !!!!

Vielen Dank für diese Tipps! 😀 😀

Ob ich nun
System.out.println(new Double(j).toString().replaceAll(".0", ""));
von Verjigorm oder die Möglichkeit mit dem DecimalFormat von ARadauer verwende, entscheide ich nach Rücksprache mit meinem Auftraggeber.

Wünsch euch ein schönes Wochenende!
Julia
 
Hiho,

julchen81 hat gesagt.:
[...] entscheide ich nach Rücksprache mit meinem Auftraggeber.

Was hastn du für Auftraggeber die sich für so ne technisch interne Sache interessieren ? 😉

Normalerweise sind die Auftraggeber froh keines Source zu sehen und noch froher nicht mit dem Entwickler sprechen zu müssen. 😀

bye Saxony
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben