Eine bessere Lösung ist die Verwendung von log(), dann müssen Sie es nicht in eine Zeichenfolge umwandeln.
– Robert
10. Februar 2015 um 14:37 Uhr
Mit mathematischen Funktionen wie log() ist für mich nicht lesbar. Ich glaube, dass Programmierer ! = Mathematiker
– böseReiko
18. Oktober 2017 um 8:12 Uhr
Diese Lösung funktioniert nicht für eine größere Anzahl. Testen Sie mit jeder Zahl, die mehr als 19 Ziffern hat.
– Maciek Kemnitz
11. Juli 2019 um 8:55 Uhr
scheitern mit $n = 0156;
– Paketüberfluss
2. August 2021 um 16:08 Uhr
Robert
Die akzeptierte Antwort funktioniert nicht mit den großen Zahlen. Der bessere Weg, um die Länge einer beliebigen Zahl zu berechnen, ist der Aufruf floor(log10($num) + 1) mit einem Scheck für 0.
Es hat mehrere Vorteile. Es ist schneller, Sie müssen keine Typen umwandeln, es funktioniert mit großen Zahlen, es funktioniert mit verschiedenen Zahlensystemen wie bin, hex, oct.
Die Gleichung macht den Logarithmus mit der Basis 10, macht dann den Boden daraus und addiert 1.
Diese Lösung kann auf der Basis unabhängig arbeiten. Wenn Sie also die Länge von Binär- oder Hexadezimalzahlen berechnen möchten, ändern Sie einfach die Basis des Logarithmus.
Eine andere Möglichkeit, die Länge einer Zahl in Ziffern zu ermitteln, besteht darin, den ganzzahligen Teil der Zahl durch 10 zu teilen, bis er zu 0 wird.
Verwenden Sie einfach eine Version von (int)(log($num,10)+1) schlägt bei 10, 100, 1000 usw. fehl. Es zählt die Zahl 10 als 1 Ziffer, 100 als zwei Ziffern usw. Es schlägt auch bei 0 oder einer beliebigen negativen Zahl fehl.
Wenn Sie Mathematik verwenden müssen (und die Zahl nicht negativ ist), verwenden Sie:
$numlength = (int)(log($num+1, 10)+1);
Oder für eine mathematische Lösung, die die Ziffern in positiven ODER negativen Zahlen zählt:
Wie funktioniert es nicht? Welche Ergebnisse erhalten Sie?
– John Conde
10. Februar 2015 um 14:13 Uhr
Anstatt viele Lösungen zu geben, hat jemand eine Idee zu “Warum DIESER Code nicht funktioniert?”. Weil der Code funktionieren sollte.
– Debflav
10. Februar 2015 um 14:23 Uhr
Der gepostete Code funktioniert wie ein Zauber!
– axiak
10. Februar 2015 um 14:23 Uhr