Declaring a numeric type (default number of digits: 32 digits for the integer part and 6 digits for the decimal part) Hide the details

<Variable name> is numeric

<Name of variable 1>, <Name of variable 2> are numeric

<Name of variable>:

Name of variable to declare. This variable will be a numeric variable with 32 digits for the integer part and 6 digits for the decimal part.

Declaring a numeric type (automatic number of digits) Hide the details

<Variable name> is numeric (*)

<Name of variable 1>, <Name of variable 2> are numeric (*)

<Name of variable>:

Name of variable to declare. (*) means that the format of the variable is automatically adapted to the value.

Declaring a numeric type while specifying the integer part Hide the details

<Variable name> is numeric (<Integer part>)

<Name of variable 1>, <Name of variable 2> are numeric (<Integer part>)

<Name of variable>:

Name of variable to declare.

<Integer part>:

Number of digits in the integer part. A numeric can contain up to 38 significant digits.

Declaring a numeric type while specifying the integer part and the decimal part Hide the details

<Variable name> is numeric (<Integer part>, <Decimal part>)

<Name of variable 1>, <Name of variable 2> are numeric (<Integer part>, <Decimal part>)

<Name of variable>:

Name of variable to declare.

<Integer part>:

Number of digits in the integer part. A numeric can contain up to 38 significant digits.

<Decimal part>:

Number of digits in the decimal part. A numeric can contain up to 38 significant digits.

Remarks

Assigning a numeric variable

When assigning a value (value entered directly, given by a function, etc.) to a numeric value, this value is automatically converted into real by the compiler.

For example:

num1 is numeric num1 = 1234567890123456789123456789 Trace(num1) // num1 does not contain the correct value

num2 is numeric num2 = 1234567890123456789.0 Trace(num2) // num2 does not contain the correct value

To force the assignment of a numeric type, use 0n before the value. For example:

num1 is numeric num1 = 0n1234567890123456789123456789 Trace(num1) // num1 contains the correct value

num2 is numeric num2 = 0n1234567890123456789.0 Trace(num2) // num2 contains the correct value

Versions 23 and later

Thousand separator

You can use spaces and underscore characters to separate thousands in numbers. For example:

num1 is numeric num1 = 123 456.478

num2 is numeric num2 = 0n 47 568 014.478

num3 is numeric num3 = 7_014.478

New in version 23

Thousand separator

You can use spaces and underscore characters to separate thousands in numbers. For example:

num1 is numeric num1 = 123 456.478

num2 is numeric num2 = 0n 47 568 014.478

num3 is numeric num3 = 7_014.478

Thousand separator

You can use spaces and underscore characters to separate thousands in numbers. For example:

num1 is numeric num1 = 123 456.478

num2 is numeric num2 = 0n 47 568 014.478

num3 is numeric num3 = 7_014.478

Operations that can be performed with a numeric type

The following operations can be performed with numeric variables:

Comparison operations: ability to use the =, <>, <, <=, >, >= operators

During an operation that involves a numeric variable, all the calculations are performed in the format of the numeric values handled.

For example, during an operation between a numeric and a real, the real is converted into numeric to perform the operation.

Limit

A numeric type can have 38 significant digits.

The "highest" cases ((0,38) or (1,37) for example) can produce calculations errors caused by overflows.

The "lowest" cases ((38,0) or (37,1) for example) can produce calculation errors caused by loss of decimal values.

Numbers (real, integer, currency, numeric) cannot exceed 14 significant digits in PHP. If they exceed this limit, they are rounded to 14 digits.

Currency/Numeric comparison

The Currency type is faster for the calculations that do not require a precision greater than 24 significant digits (up to 17 digits for the integer part and up to 6 digits for the decimal part).