Ich bin gerade dabei Hunderstelsekunden in Minuten, Sekunden, und Hundertselsekunden darzustellen. Das konvertieren wird von einer Methode übernommen, welche als Parameter ein int erwartet und einen String in Form von "mm:ss:hshs" zurückgibt.
Also 2409 => "00:24:09".
Das ganze klappt auch ganz gut, blöderweise wird von Zeit zu Zeit mein Ergebnis durch Ungenauigkeiten mit double-Werten verfälscht. Jetzt suche ich einen Algorithmus der evtl ohne double Zahlen auskommt, oder es schafft diese Ungenauigkeiten zu umgehen.
Hier mein bisheriger "double-Ansatz" :
Wenn ich der timeToString Methode jetzt 27 übergebe, bekomme ich folgendes ausgegeben:
Das Problem liegt wohl in Zeile drei(Konsolenausgabe), wo eigentlich 0.27 und nicht 0.2699999999999... stehen sollte.
Ich würde mich über Lösungsansätze freuen.
Also 2409 => "00:24:09".
Das ganze klappt auch ganz gut, blöderweise wird von Zeit zu Zeit mein Ergebnis durch Ungenauigkeiten mit double-Werten verfälscht. Jetzt suche ich einen Algorithmus der evtl ohne double Zahlen auskommt, oder es schafft diese Ungenauigkeiten zu umgehen.
Hier mein bisheriger "double-Ansatz" :
Java:
public String timeToString(int iTime){
int min = (int) (iTime / 6000);
System.out.println(min);
double dSec = ((iTime/ 6000.0) - min);
System.out.println(dSec);
double restSec = dSec *60;
System.out.println(restSec);
int sec = (int)restSec;
System.out.println(sec);
int hSec = (int) ((restSec - sec)*100);
System.out.println(hSec);
return underTen(min)+":"+underTen(sec)+":"+underTen(hSec);
}
private String underTen(int number) {
return number < 10 ? "0" + number : ""+number;
}
Wenn ich der timeToString Methode jetzt 27 übergebe, bekomme ich folgendes ausgegeben:
Code:
0
0.0045
0.26999999999999996
0
26
00:00:26
Das Problem liegt wohl in Zeile drei(Konsolenausgabe), wo eigentlich 0.27 und nicht 0.2699999999999... stehen sollte.
Ich würde mich über Lösungsansätze freuen.