Ermittlung der Stellen einer Zahl
-
Helium: 1000 hat aber 4 Stellen.
Besser IMHO: Solange durch 10 Teilen, bis man auf 0 kommt:
int stellen(int zahl) { int ergebnis = 0; do { zahl /= 10; ergebnis += 1; } while (zahl != 0); return ergebnis; }
-
Helium: 1000 hat aber 4 Stellen.
Ja ... ähm ... *räusper* ... das +1 kann man sich doch denken ... oder?
-
Besser IMHO: Solange durch 10 Teilen, bis man auf 0 kommt:
hmm ich würd sagen besser ist die performantere alternative von beiden wobei ich nicht aus dem hut weiss welche schneller ist... Wie ist denn ln implementiert?(mit taylor-reihen oder ist das ein riesiger lookuptable...)
-
Bashars Code funktioniert aber auch mit 0 und mit negativen Werten...
MfG Jester
-
Meinem schlechten und ungenauem Test (RDTSC, ein Durchlauf) zufolge ist die log-Version 50 bis 100 mal langsamer als die Schleifen-Version.
-
Hui, das hätte ich ehrlich gesagt nicht erwartet... man lernt nie aus.
Man sollte halt doch messen und nicht schätzen.
-
Bashars Code funktioniert aber auch mit 0 und mit negativen Werten...
na gut aber die anpassung von heliums code diesbezüglich ist ja nur ein witz
Hui, das hätte ich ehrlich gesagt nicht erwartet
hätte auch geschätzt das der log nicht so schlecht abschneidet...
-
" EDIT_X: Dieser Code ist Mist und funktioniert höchstwahrscheinlich nicht. "template<class T> T gpt(T a, T b, int p) { if(p == 0) return a; return gpt(a*b, b, p-1); } template<class T> int stellen(T a) { a = abs(a); int z = 1; while(true) { if(a < gpt(T(10),T(10),z)) return z+1; ++z; } }
-
Windalf schrieb:
Bashars Code funktioniert aber auch mit 0 und mit negativen Werten...
na gut aber die anpassung von heliums code diesbezüglich ist ja nur ein witzDas schon, aber damit verliert der Code imho viele seiner Vorzüge:
Er wird länger und er enthält Fallunterscheidungen.MfG Jester
-
Er wird länger und er enthält Fallunterscheidungen
ohne das jetzt zu testenstatic_cast<int>(zahl?log10(abs(zahl)):1)
ist glaub ich noch erträglich oder
Gruss Windalf
-
Ne, find ich absolut häßlich. Da liebr Bashars Code.
Sowas kommt mir in meine Projekt nicht rein.Außerdem ist er länger und enthält ne Fallunterscheidung. Der Versuch die auch noch zu kaschieren macht es sicher nicht besser.
MfG Jester
-
@Jester
Auwei ist jetzt kein witz aber ich progge fast immer so...
-
Gegen C ? A : B ist ja auch nichts einzuwenden, wenn man es überlegt einsetzt. Leidet aber die Lesbarkeit daraunter, so ist es schlecht. Ich kann soetwas zwar auch ohne Probleme lesen, aber angenehmer ist es schon so, wie Bashar vorgschlagen hat.