Deutsch
Bugs und vermeintliche

Aktuelle Version: XProfan X4

Rundung bei Int

 

Jörg
Sellmeyer
Profanhilfe Int (N)
Ganzzahliger Anteil von N. Es wird nicht gerundet.

SubProc Get.Einer

    Parameters Zahl&&
    declare f!
    Var Divisor& = 10
    f! = (Zahl&& / Divisor& - Int(Zahl&& / Divisor&))
    Zahl&& = (Zahl&& / Divisor& - Int(Zahl&& / Divisor&)) * Divisor&
    Return (f! * Divisor&)

EndProc

SubProc Get.Zehner

    Parameters Zahl&&
    declare f!
    Var Divisor& = 100
    f! = (Zahl&& / Divisor& - Int(Zahl&& / Divisor&))
    Zahl&& = (Zahl&& / Divisor& - Int(Zahl&& / Divisor&)) * Divisor&
    Return (f! * Divisor&)

EndProc

Print Int(Get("Einer",2020))
Print "Warum kommt hier nur 19 raus?"
Print Int(Get("Zehner",2020))
Print
Print Get("Einer",2020)
Print "Als Floatausgabe richtig..."
Print Get("Zehner",2020)
Print "und mit Round auch"
Print Int(Round(Get("Zehner",2020),0))
WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
24.05.2018  
 




RGH
Hallo,

das liegt daran, dass es nicht alle Ganzzahlen eine exakte interne Bit-Entsprechung als Fließkommazahl haben.

(Das ist auch der Grund, warum Vergleiche von Fließkommazahlen mit Ganzzahlen gerne daneben gehen und niemals verwandt werden sollten.)

Diese Zeilen zeigen das Problem:
CLS
Var Zahl& = 2020
Var Divisor& = 100
set("decimals",15)
print "  ";Zahl& / Divisor&
set("decimals",6)
print "  ";Zahl& / Divisor&
WaitInput
end

Bei der Defaulteinstellung von 6 Nachkommastellen, fällt es nicht so leicht auf. Mit Round() lässt sich das Problem umgehen.

Ich habe lange in der Finanzbranche programmiert und da war das eine stetige Falle, die an jeder Ecke darauf wartete, dass man hineinfällt. Das Problem gibt es auch in JAVA, Delphi oder C, da es mit der internen Darstellung von Fließkommazahlen des Prozessors zu tun hat.
Einige Sprachen bieten für rundungsfehlerfreie Berechnungen daher BCD-Arithmetik an.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
24.05.2018  
 




Jörg
Sellmeyer
Danke, das erklärt es.

Hier  [...]  sind ein paar Möglichkeiten, um das ohne Rundungsprobleme zu lösen.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
24.05.2018  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

559 Betrachtungen

Unbenanntvor 0 min.
lange-jens vor 6 Tagen
Thomas Zielinski31.08.2019
Manfred Barei18.05.2019
Pedro Miguel17.05.2019
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Jörg Sellmeyer (2x)
RGH (1x)


AGB  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Impressum  |  Mart  |  Support  |  Suche

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie