Long to String

wyldstyle

Aktives Mitglied
Mal ne ganz blöde Frage, wieso geht:

Code:
public String bla(){
		long tmp  = 11111111111111;
		tmp = (tmp/100)*5
		String q = tmp.toString();
		
		return tmp;
	}

nicht?

Gleiches Problem wenn ich
Code:
int i = 6;
String s = i.toString();

anwenden will!

Das sagt die API:

public String toString()

Returns a String object representing this Long's value. The value is converted to signed decimal representation and returned as a string, exactly as if the long value were given as an argument to the toString(long) method.

Overrides:
toString in class Object

Returns:
a string representation of the value of this object in base 10.
 
int und long sind primitive Datentypen und haben deshalb keine Klassenmethoden, die Methode toString gibts es bei den Wrapper-Klassen Long und Integer.
Benutz einfach String.valueOf(...)
 
long != Long

long ist ein primitiver Datentyp, kein Objekt, demnach kann man auf ihm keine Methoden aufrufen.
Long hingegen ist ein Objekt.
 
long ist kein Objekt?

noch wichtigerer Hinweis: ganzzahlige Rechnung in Java wird gerundet:
109 / 10 * 5 = 10 * 5 = 50
dagegen
109 * 5 / 10 = 545 / 10 = 54

oder
109 / 10.0 * 5 = 10.9 * 5 = 54.5 als double-Wert
 
Mal ne ganz blöde Frage, wieso geht:

Code:
public String bla(){
		long tmp  = 11111111111111;
		tmp = (tmp/100)*5
		String q = tmp.toString();
		
		return tmp;
	}

nicht?
Du hast als Rückgabewert der Methode String angegeben, gibst mit tmp aber ein long zurück. Du musst q zurückgeben.


Gleiches Problem wenn ich
Code:
int i = 6;
String s = i.toString();

anwenden will!

Das sagt die API:
int ist nicht gleich Integer!
int ist ein primitiver Typ und bietet keine Methoden. Integer ist eine Wrapper-Klasse für diesen primitiven Typ und bietet damit all die für Objekte typischen Eigenschaften. Die Methode toString() bezieht sich also auf Integer, nicht auf int.
Eine Methode zum Umwandeln von primitiven Typen in ihre Stringrepräsentation ist die statische Methode [c]valueOf(someType)[/c] der Klasse String, wobei someType hier für einen primitiven Typen steht (byte, short, int, long, float, double, boolean).
 
Wie gesagt handelt es sich bei long und int um primitive Datentypen.
Ausserdem würde ich Ganzzahlen zuerst multiplizieren und dann dividieren - bzgl Genauigkeitsverlust
Java:
public String bla(){
	long tmp  = 11111111111111;
	tmp = tmp*5/100;
	
	return String.valueOf(tmp);
}
 

Zurück
Oben