Ansicht
Dokumentation

FLOATINGPOINT_COMPARE_RELATIVE - Relativer Vergleich von Floatingpointwerten mit zulässiger Abweichung

FLOATINGPOINT_COMPARE_RELATIVE - Relativer Vergleich von Floatingpointwerten mit zulässiger Abweichung

General Material Data   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Bei der Gleitpunktarithmetik können durch Konvertierungen oder nach Rechenoperationen Rundungsfehler auftreten. Die Gleichheitsprüfung im ABAP liefert dann das Ergebnis 'ungleich'. Dieser Funktionsbaustein prüft, ob zwei Gleitpunktzahlen 'relativ gleich' sind, d.h. gleich bis auf eine vorgebbare maximale Abweichung.

Sind v1 und v2 die zu vergleichenden Werte und eps > 0 die maximale Abweichung, dann ist die relative Abweichung wie folgt definiert:
- eps <= abs((v1 -v2) / min(abs(v1),abs(v2)) ) <= eps, wenn v1 &lt;&gt; 0 und v2 &lt;&gt; 0

Ist v1 = 0 oder v2 = 0, dann ist die relative Abweichung gleich 1, d.h. es wird geprüft, ob 1 <= eps ist.

Beispiel:

DATA:
FLOAT1 TYPE F,
FLOAT2 TYPE F,
DIFF TYPE C.

* FLOAT1 und FLOAT2 konvertieren oder damit rechnen

IF FLOAT1 &lt;&gt; FLOAT2.
CALL FUNCTION 'FLOATINGPOINT_COMPARE_RELATIVE'
EXPORTING FIRST_VALUE = FLOAT1
SECOND_VALUE = FLOAT2
IMPORTING VALUES_ARE_DIFFENT = DIFF.
IF DIFF = SPACE.
* FLOAT1 und FLOAT2 weichen relativ gleich
ELSE.
* FLOAT1 und FLOAT2 sind ungleich
* ENDIF.

Performancehinweis:
Bevor der Funktionsbaustein aufgerufen wird, sollte ein ABAP-Vergleich durchgeführt werden. Erst wenn die Werte nach dem ABAP-Vergleich ungleich sind, sollte dieser Funktionsbaustein aufgerufen werden.





Parameter

FIRST_VALUE
MAX_RELATIVE_DEVIATION
RELATIVE_DEVIATION
SECOND_VALUE
VALUES_ARE_DIFFERENT

Ausnahmen

Funktionsgruppe

SFLT

BAL_S_LOG - Application Log: Log header data   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 1959 Date: 20240523 Time: 151315     sap01-206 ( 33 ms )