vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB613.04.11
Einheiten-Präfixe

Die Funktion normiert und formatiert eine übergebene Zahl und erzeugt ein passendes Präfix dazu.

Autor:   Horst LaubmannBewertung:  Views:  9.782 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

In der Technik werden Zahlen sehr schnell sehr groß oder auch klein. Sie werden dann i.d.R. im wissenschaftlichen Format notiert. Im Sprachgebrauch werden dann aber zur Abkürzung der Aussprache Präfixe benutzt.

Beispiel: 56,2 MegaOhm

Nachfolgender Code generiert aus einem Wert (-10E24 < Zufallszahl < 10E24) eine auf 3 Nachkommastellen formatierte Zahl mit passendem Präfix.

Netter Nebeneffekt: die großen Zufallszahlen ! Viel Spaß.

Erstellen Sie für das Beispielprojekt ein neues Projekt mit einem Command-Button "Cmd_Zufallszahl", sowie 2 Label-Controls "lbl_Zufallszahl" und "lbl_Ausgabe".

Private Sub Cmd_Zufallszahl_Click()
  ' eine geeignete Zufallszahl von -10E24 bis 10E24 generieren:
  ' Mantisse und Exponent wird separat erzeugt!
 
  Dim iExponent As Integer
  Dim sZufallszahl As Single
 
  Randomize
  iExponent = Int(49 * Rnd - 24)      ' Exponent -24 bis 24
  sZufallszahl = 2 * Rnd - 1          ' von -1 bis (fast) +1
  sZufallszahl = sZufallszahl * (10 ^ iExponent)
 
  ' unbehandelt ausgeben
  lbl_Zufallszahl.Caption = sZufallszahl
 
  ' behandelt ausgeben
  lbl_Ausgabe.Caption = FindePräfix(sZufallszahl)
End Sub
' Formatiert die Zahl und erzeugt einen passenden Einheiten-Präfix
' Rückgabe als String
Public Function FindePräfix(ByVal Wert As Single) As String
 
  Dim iExpo As Integer
  Dim Präfix As String
 
  iExpo = 0
 
  ' Wert testen und normieren...
  If Wert <> 0 Then
    ' positiv oder negativ
    If Wert > 0 Then
      ' Wert positiv
      While Wert < 1
        ' milli, mikro oder so
        Wert = Wert * 1000: iExpo = iExpo - 1
      Wend
 
      While Wert >= 1000
        ' Kilo, Mega oder so
        Wert = Wert * 0.001: iExpo = iExpo + 1
      Wend
 
    Else
      ' Wert negativ
      While Wert > -1
        Wert = Wert * 1000: iExpo = iExpo - 1
      Wend
 
      While Not Wert > -1000
        Wert = Wert * 0.001: iExpo = iExpo + 1
      Wend
    End If
  End If
 
  ' ...Präfix aufbereiten
  Select Case iExpo
    Case -8: Präfix = "yokto"
    Case -7: Präfix = "zepto"
    Case -6: Präfix = "atto"
    Case -5: Präfix = "femto"
    Case -4: Präfix = "pico"
    Case -3: Präfix = "nano"
    Case -2: Präfix = "mikro"
    Case -1: Präfix = "milli"
    Case 0: Präfix = ""
    Case 1: Präfix = "Kilo"
    Case 2: Präfix = "Mega"
    Case 3: Präfix = "Giga"
    Case 4: Präfix = "Tera"
    Case 5: Präfix = "Peta"
    Case 6: Präfix = "Exa"
    Case 7: Präfix = "Zetta"
    Case 8: Präfix = "Yotta"
  End Select
 
  FindePräfix = Format$(Wert, "0.000") & " " & Präfix
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.