Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB5, VB6 | 28.09.05 |
Größte Dezimalstelle einer Zahl ermitteln Haben Sie schon mal versucht die größte Dezimalstelle einer Zahl zu ermitteln? | ||
Autor: Gero Bonow | Bewertung: | Views: 11.290 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Haben Sie schon mal versucht die größte Dezimalstelle einer Zahl zu ermitteln?
Im Grunde ist dieses Problem recht einfach, da sich z.B. für 100 drei Dezimalstellen ergeben, oder für 0,001 gleich minus drei.
Was sich mit unseren Verstand recht einfach bewerkstelligen läßt, ist in VB (und auch in anderen Programmiersprachen) nicht ganz so einfach. Eine VB bzw. mathematische Funktion wie dem Sinus, oder dem Logarithmus gibt es für dieses Problem nicht.
Ein Ansatz dazu bietet der sogenannte Zehnerlogarithmus (LOG10). Da dieser in VB ebenfalls nicht implementiert ist, muss dieser über die allgemeine Formel berechnet werden:
LOG10(x) = Log(x) / Log(10)
Somit läßt sich jetzt die größte Dezimalstelle jeder beliebigen Zahl berechnen. Da hier nur die ganze Stelle von interesse ist, kann der Rest bequem abgeschnitten werden.
Die nachfolgende Funktion ist zwar mathematisch nicht ganz korrekt, löst aber das Problem recht einfach und vor allem: schnell
Public Function GetExponent(ByVal Value) As Integer If Value >= 1 Or Value <= -1 Then GetExponent = Fix(Log(Abs(Value)) / Log(10) + 1) ElseIf Value < 1 Or Value > -1 Then GetExponent = Fix(Log(Abs(Value)) / Log(10) - 1) Else GetExponent = 0 End If End Function