integer literal

Integer literals are series of decimal digits without decimal point or scientific
exponent. All but huge integers (more than 19 digits) can be stored in one of the
integer data types SBYTE to GIANT.

Values from -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 can be represented in at least one of the integer formats. Numeric literals are stored in the smallest type that can hold them. The ranges of the integer data types are as follows:

`SBYTE -128 to +127`

`UBYTE 0 to +255`

`SSHORT -32,768 to +32,767`

`USHORT 0 to +65,535`

`SLONG -2,147,483,648 to +2,147,483,647`

`ULONG 0 to +4,294,967,295`

`XLONG Same as SLONG / GIANT on 32-bit / 64-bit systems`

`GIANT -9,223,372,036,854,775,808 to
+9,223,372,036,854,775,807`

decimal literal

Decimal literals are series of decimal digits with a decimal point, but no scientific
exponent. Integer data types cannot store the fractional part of numbers, so decimal
literals become one of the two floating point data types, SINGLE or DOUBLE .

Positive or negative numbers with exponents larger than about 10^{38} or
smaller than about 10^{-38} cannot be held in SINGLE, so they are typed DOUBLE .

Numbers that are more precisely represented in DOUBLE than SINGLE are typed DOUBLE . Numbers with more than 7 significant decimal digits can always be represented more precisely in DOUBLE, as can many shorter numbers. For example, .1 is typed DOUBLE because floating point representations of .1 are binary continuing fractions (like 1/3 in decimal), and DOUBLE stores more of the fraction.

Decimal literals can be explicitly typed SINGLE or DOUBLE appending a type-suffix character, as in .100! or .100#.

scientific literal

Scientific literals are decimal digits, with or without a decimal point, followed by a
scientific exponent. The format of a valid scientific exponent is {d|e|D|E}[+/-]XXX}
where XXX is 1 to 3 decimal digits. e and E exponent specifiers identify numbers as
SINGLE , while d and D specify DOUBLE.

-3e-2 is -0.03 in SINGLE, while 88.110d3 is 88110 in DOUBLE. The range of SINGLE and DOUBLE data types are:

`SINGLE < 0 -3.402823e+38 to -1.175494e-38`

`SINGLE = 0 0`

`SINGLE > 0 +1.175494e-38 to +3.402823e+38`

`DOUBLE < 0 -1.79769313486232d+308 to -2.22507385850719d-308`

`DOUBLE = 0 0`

`DOUBLE > 0 +2.22507385850719d-308 to +1.79769313486232d+308`