Dann addiere 0.98 dazu und schneide die Nachkommastellen ab.
public void analyseCode(String code){
if (code.contains("0.98")){
this.wtfPerMinute++;
}
}
Nunja, dafür kann man das ja entsprechend schreiben, so dass es insgesamt lesbar ist und bleibt.Code:public void analyseCode(String code){ if (code.contains("0.98")){ this.wtfPerMinute++; } }
nach drei Monaten schaust du dir den Quellcode an und fragst dich, was du da gemacht hast und woher die 0.98 kommt
static double runde(double d) {
if (d - Math.floor(d) >= 0.02) {
return Math.ceil(d);
} else {
return Math.round(d);
}
}
for (int i = 0; i < 50; i++) {
double d = i / 1000.0;
System.out.println(d + " " + runde(d));
//d = -d;
//System.out.println(d + " " + runde(d));
}
Vielen Dank!Java:static double runde(double d) { if (d - Math.floor(d) >= 0.02) { return Math.ceil(d); } else { return Math.round(d); } }
Java:for (int i = 0; i < 50; i++) { double d = i / 1000.0; System.out.println(d + " " + runde(d)); //d = -d; //System.out.println(d + " " + runde(d)); }
Was soll mit negativen Zahlen geschehen?
Logisch wäre, -0.98 => -0.0 und -0.981 => -1.0 (=> = wird zu...).
Falls du dich auf @L0oNY und @kneitzel beziehst: das Problem ist nicht das was, sondern das warum.Sorry aber das ist wieder was das mir die Zehennägel aufrollt. Wenn ein Programmierer folgende Zeilen sieht:
int specialRound(float f)
{
return (int)(f+0.98);
}
und nicht sofort weiß was da passiert, dann sollte er vielleicht besser Bäcker oder Konditor werden....
Claus
Das „warum“ bezog sich nicht darauf, warum man den Code so schreiben würde...Warum? Weil es ein ganz einfacher Code ist den jeder mit einem Blick versteht, der für den Compiler super zu optimieren und damit sau schnell ist und kein 5 Zeilen Monstrum wie der Vorschlag von Tobias wo ich viel länger hinsehen muss um zu verstehen was das soll...
(int)(f+0.98)
auftaucht.i%4 == 0
ist super einfacher Code, trotzdem können das die wenigsten aus dem Stand erklären...Die wenigsten bezogen auf welche Gruppe? Ich hoffe mal, dass Du außerhalb der Gruppe der (Java-)Entwickler meinst...trotzdem können das die wenigsten aus dem Stand erklären...
Meine mit erklären mehr als nur zu sagen „prüft ob durch vier teilbar“Die wenigsten bezogen auf welche Gruppe? Ich hoffe mal, dass Du außerhalb der Gruppe der (Java-)Entwickler meinst...
Ach so, es geht noch um Kommentar 8, sprich den Hintergrund, weshalb er bei 0.2 aufrunden möchte. Das ist natürlich was anderes, denn ohne Kontext wird es immer schwierig.Meine mit erklären mehr als nur zu sagen „prüft ob durch vier teilbar“aber durchaus bezogen auf Entwickler
Eben als Beispiel, dass das „warum, wieso, weshalb“ nicht mal aus solch einfachem Code hervorgeht.
Ich finde meinen Code lesbarer als das, was kneitzel und co. da zu veranstalten versuchen...
Es ging ja um "lesbarer" und nicht um "besser". Und ich denke, das ist ein Problem "falsch" verstandener Lesbarkeit i. S. von "Clean Code".Und wenn Du Deinen komplexen Code mit dem von @Thallius vergleichst, dann findest Du Deinen komplexe Code wirklich besser?
falls nachkommaTeil(x) >= 0.2
dann aufrunden(x)
sonst abrunden(x)
(int)(x + 0.98)
gemeint ist und der Code oben verlangt nur unnütze Lesezeit ab. Das ist nur meine Sicht der Dinge.