[ABAP] ABAP-Mathematik Bibliothek (cl_abap_math)

* min/max der Numerischen Typen
WRITE: / |{ cl_abap_math=>max_int4 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_int4 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_int8 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_int8 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_decfloat16 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_decfloat16 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>max_decfloat34 STYLE = SCIENTIFIC }|.
WRITE: / |{ cl_abap_math=>min_decfloat34 STYLE = SCIENTIFIC }|.

* float
DATA: lv_fv TYPE f VALUE '1.005'.
* Auf 15 Dezimalstellen gerundeter Wert
WRITE: / |{ cl_abap_math=>round_f_to_15_decs( lv_fv ) DECIMALS = 2 }|.

* Scale und Anzahl Stellen
DATA: lv_dec TYPE decfloat34 VALUE '1234.56789'.
* Liefert die Scale einer DECFLOAT-Zahl
WRITE: / cl_abap_math=>get_scale( lv_dec ).
* Anzahl der signifikanten Stellen einer DECFLOAT Zahl
WRITE: / cl_abap_math=>get_number_of_digits( lv_dec ).

[C#] Gleitkommazahlen richtig vergleichen

using System;

/// <summary>
/// freeware helper class for little math problems
/// (W) 2014 by admin of codezentrale.6x.to
/// </summary>
public static class MathTools
{
    /// <summary>
    /// Epsilon for float comparision
    /// </summary>
    public const float EPSILON_FLOAT = 1.192093E-07f;
    /// <summary>
    /// Epsilon for double comparision
    /// </summary>
    public const double EPSILON_DOUBLE = 2.22044604925031E-16;

    /// <summary>
    /// Gleitkommavergleich für float
    /// </summary>
    /// <param name="f1"->1. Zahl</param>
    /// <param name="f2"->2. Zahl</param>
    /// <returns>true, wenn gleich</returns>
    public static bool FloatIsEqual(float f1, float f2)
    {
        return (Math.Abs(f1 - f2) < EPSILON_FLOAT);
    }
    /// <summary>
    /// Gleitkommavergleich für double
    /// </summary>
    /// <param name="d1"->1. Zahl</param>
    /// <param name="d2"->2. Zahl</param>
    /// <returns>true, wenn gleich</returns>
    public static bool DoubleIsEqual(double d1, double d2)
    {
        return (Math.Abs(d1 - d2) < EPSILON_DOUBLE);
    }
}