ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Numeric Calculations → System Classes for Numbers
System Class CL_ABAP_MATH
Other versions: 7.31 | 7.40 | 7.54Constants for Minimum and Maximum Values
The class CL_ABAP_MATH contains constants with the limits of the value ranges built-in numeric types.
Example
Displays the minimum values and maximum values of numeric types.
cl_demo_output=>display(
|i: { cl_abap_math=>min_int4 WIDTH = 20
} to { cl_abap_math=>max_int4 WIDTH = 20 } \n| &&
|int8: { cl_abap_math=>min_int8 WIDTH = 20
} to { cl_abap_math=>max_int8 WIDTH = 20 } \n| &&
|decfloat16: { cl_abap_math=>min_decfloat16 STYLE = SCIENTIFIC
WIDTH = 20
} to { cl_abap_math=>max_decfloat16 STYLE = SCIENTIFIC
WIDTH = 20 } \n| &&
|decfloat34: { cl_abap_math=>min_decfloat34 STYLE = SCIENTIFIC
WIDTH = 20
} to { cl_abap_math=>max_decfloat34 STYLE = SCIENTIFIC
WIDTH = 20 } \n| ).
Operations with Floating Point Numbers
The class CL_ABAP_MATH contains methods for operations with floating point numbers.
Rounding Binary Floating Point Numbers
The method ROUND_F_TO_15_DECS rounds a binary floating point number to 15 places using commercial rounding.
Note
Commercial rounding to 15 digits can also be done using the built-in function
round, the result of which then has the decfloat34 type.
Example
The example shows how rounding errors in the output formatting of binary floating point numbers can
be prevented by two-step rounding using the method ROUND_F_TO_15_DECS. Instead of the method call, the function call round( val = float dec = 15 ) can be used here.
DATA float TYPE f VALUE '1.005'.
cl_demo_output=>display(
|{ float DECIMALS = 2 }\n| &&
|{ cl_abap_math=>round_f_to_15_decs( float ) DECIMALS = 2 }\n| ).
Operations with Decimal Floating Point Numbers
- The method GET_SCALE gets the scaling of a decimal floating point number.
- The method GET_NUMBER_OF_DIGITS gets the precision of a decimal floating point number.
- The method NORMALIZE gets a normalized floating point number. This means that the scaling and precision of an input value are changed so that the mantissa has no trailing zeroes.
- The method GET_SCALE_NORMALIZED gets the scaling of a normalized decimal floating point number. If the input value has decimal places, the return value is the number of decimal places without trailing zeroes.
- The method GET_MAX_DB_VALUE gets the maximum value of a number of the type DF16_DEC or DF34_DEC on the database.
- The method GET_DB_LENGTH_DECS gets the length and number of decimal places of a number of the type DF16_DEC or DF34_DEC on the database.
Note
The rounding functions
round and rescale can be used to round and rescale decimal floating point numbers.
Example
Displays the scaling and precision of a decimal floating point number.
DATA(decf) = CONV decfloat34( '1234.56789' ).
cl_demo_output=>display(
|value = { decf
}\nscale = { cl_abap_math=>get_scale( decf )
}\nprecision = { cl_abap_math=>get_number_of_digits( decf ) }| ).
This translation does not reflect the current version of the documentation.