Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
140to144
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
140to144
140to144
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehlerhafte Ausgabe in Tabelle

Fehlerhafte Ausgabe in Tabelle
30.07.2002 17:53:43
Nepumuk
Hallo Forum
in einer Funktion wird eine Zahl kaufmännisch gerundet. Wenn ich die Funktion stoppe und mir das Ergebniss anschaue ist es in Ordnung. Im Tabellenblatt kommt aber ein anderer Wert an.
Der Code:

Eingabe = 123,5447
Ausgabe im Programm = 123,55
Ausgabe in Tabelle = 123,5500031

Wiso?
Gruß
Nepumuk

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Fehlerhafte Ausgabe in Tabelle
30.07.2002 19:36:43
Rolf, Lgh.
Hallo,
warum nicht so:

Oder habe ich etwas übersehen?
Gruß Rolf
PS: Bitte FAQ beachten: https://www.herber.de/forum/faq.htm
"NickNames sind nicht erwünscht. Diese Frager werden bei der Beantwortung nicht gerade bevorzugt behandelt. Nenne Deinen Vornamen, damit man Dich ansprechen kann."
Re: Fehlerhafte Ausgabe in Tabelle
31.07.2002 01:36:10
Nepumuk
Re: Fehlerhafte Ausgabe in Tabelle
31.07.2002 20:33:45
Rolf, Lgh.
'Wenn ich das Programm anhalte und den Wert der Funktionsvariable "Auf_Runden" anzeigen lasse ...
1. Wie machst Du das? Mit MsgBox Auf_Runden? >> dann wird Dir weiterhin nur ein String dargestellt!
2. Bei Deiner Funktion sind die Kommastellen eine Ganzzahl. Wenn Du statt CSng CDbl nimmst - höhere Genauigkeit -, wird meines Erachtens - das aus Deiner Sicht - richtige Ergebnis ermittelt. Oder
3. und wenn Du
statt

schreibst, sind ab der dritte Stelle im Ergebnis nur Nullen

Der richtige Code muß lauten:

Function Auf_Runden(Zahl As StringAs Double
    Dim hilfsstring As String, index As Integer
    Zahl = WorksheetFunction.Substitute(Zahl, ".", ",")
    If InStr(1, Zahl, ",") <> 0 Then
        hilfsstring = Mid(Zahl, InStr(1, Zahl, ",") + 2)
        Zahl = Mid(Zahl, 1, InStr(1, Zahl, ",") + 1)
        For index = Len(hilfsstring) To 2 Step -1
            If CInt(Mid(hilfsstring, Len(hilfsstring), 1)) >= 5 Then
                hilfsstring = CStr(CInt(hilfsstring) + 10)
            End If
            hilfsstring = Left(hilfsstring, Len(hilfsstring) - 1)
        Next index

        Auf_Runden = CDbl(Zahl) + CDbl(hilfsstring / 100)
    End If
End Function

     Code eingefügt mit Syntaxhighlighter 1.13

Im übrigen schließe ich mich wegen des kaufmännischen Runden meinen Vorgängern an https://www.herber.de/forum/archiv/140to144/t142630.htm
Rolf



Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige