Italia
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
Ciao,

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 per rundungsfehlerfreie Berechnungen daher BCD-Arithmetik an.

Saluto
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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.059 Views

Untitledvor 0 min.
Stringray05.01.2022
RGH05.07.2020
Jörg Sellmeyer24.06.2020
Rolf Koch15.01.2020
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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