Signifikante Stellen

signifikant

VBA-Funktion für die Anzeige von Zahlen mit der gewünschten Anzahl an signifikanten Stellen.

''
' Runde auf Anzahl signifikanter Stellen
' ---------------------------------------------------
'                          wallner-novak@bemessung.at
'
' value         zu rundende Zahl
' stellen       Anzahl der signifikanten Stellen
'
' Rückgabewert: gerundete Zahl
'
Public Function signifikant(ByVal value As Variant, ByVal stellen As Integer) As Double

    Dim s As Long   ' Zwischenwert

    If Not IsNumeric(value) Then
        value = 0
    End If

    If value = 0 Then
        signifikant = 0
        Exit Function
    Else
        s = stellen - 1 - Int(Log(Abs(value)) / Log(10))
    End If

    If s < 0 Then
        signifikant = Round(value * 10 ^ s, 0) / 10 ^ s
    Else
        signifikant = Round(value, s)
    End If

End Function

Die Anzahl der signifikanten Stellen einer gegebenen Zahl lässt sich mit folgender Funktion bestimmen:

''
' Anzahl der signifikanten Stellen (hinter dem Komma)
' ---------------------------------------------------
'                          wallner-novak@bemessung.at
'
' value         Zahl
'
' Rückgabewert: Anzahl der signifikanten Stellen
'
Public Function nSignifikant(ByVal value As Double) As Long

    Dim s As String     ' String
    Dim fd As Boolean   ' found non-cero digit
    Dim i As Long       ' counter
    Dim comma As String ' comma separator character (for international use)
    Dim pos1 As Long    ' position

    fd = False
    comma = Mid(CStr(1.1), 2, 1)

    s = CStr(value)
    nSignifikant = 0
    pos1 = InStr(1, s, comma)

    If pos1 > 0 Then
        ' find leading ceroes
        For i = pos1 To Len(s)
            If Mid(s, i, 1) <> "0" And Mid(s, i, 1) <> comma Then
                nSignifikant = nSignifikant + 1
                fd = True
            Else
                If fd Then Exit For
            End If
        Next
    Else
        ' Ganzzahl
        nSignifikant = Len(s)
    End If

End Function

Veröffentlicht von

Wallner-Novak

Bauingenieur im Bereich konstruktiver Holzbau, Software für Holzbau, Lehrender an der FH Joanneum Graz. Familie mit zwei Kindern.