C#
Section 1.8 of the C# specification includes these values.
integer-type-suffix: one of U u L l UL
Ul uL ul LU Lu lU lu
real-type-suffix: one of F f D d M m
Section 2.4.4.2 elaborates on this for Integer types:
The type of an integer literal is
determined as follows:
- If the literal has no suffix, it has the first of these types in which
its value can be represented: int,
uint, long, ulong.
- If the literal is suffixed by U or u, it has the first of these types in
which its value can be represented:
uint, ulong.
- If the literal is suffixed by L or l, it has the first of these types in
which its value can be represented:
long, ulong.
- If the literal is suffixed by UL, Ul, uL, ul, LU, Lu, lU, or lu, it is
of type ulong.
Section 2.4.4.3 elaborates on this for Real types:
If no real type suffix is specified,
the type of the real literal is
double. Otherwise, the real type
suffix determines the type of the real
literal, as follows:
- A real literal suffixed by F or f is of type float. For example, the
literals 1f, 1.5f, 1e10f, and 123.456F
are all of type float.
- A real literal suffixed by D or d is of type double. For example, the
literals 1d, 1.5d, 1e10d, and 123.456D
are all of type double.
- A real literal suffixed by M or m is of type decimal. For example, the
literals 1m, 1.5m, 1e10m, and 123.456M
are all of type decimal. This literal
is converted to a decimal value by
taking the exact value, and, if
necessary, rounding to the nearest
representable value using banker's
rounding (Section 4.1.7). Any scale
apparent in the literal is preserved
unless the value is rounded or the
value is zero (in which latter case
the sign and scale will be 0). Hence,
the literal 2.900m will be parsed to
form the decimal with sign 0,
coefficient 2900, and scale 3.
VB
Similarly, the VB specification contains details for both Integer and Floating point literals.
For integers:
ShortCharacter ::= S
IntegerCharacter ::= I
LongCharacter ::= L
For floating points:
SingleCharacter ::= F
DoubleCharacter ::= R
DecimalCharacter ::= D