Numeric literals are simply constant numbers. Numeric literals are much easier to comprehend and use than string literals. There are only a few basic ways to express numeric literals.
The numeric literal representations that Perl users are similar to those used in other languages such as C, Ada, and Pascal. The following are a few common examples:
42; # The number 42 12.5; # A floating point number, twelve and a half 101873.000; # 101,873 .005 # five thousandths 5E-3; # same number as previous line 23e-100; # 23 times 10 to the power of -100 (very small) 2.3E-99; # The same number as the line above! 23e6; # 23,000,000 23_000_000; # The same number as line above # The underscores are for readability only
As you can see, there are three basic ways to express numeric literals.
The most simple way is to write an integer value, without a decimal
point, such as 42
. This represents the number forty-two.
You can also write numeric literals with a decimal point. So, you can
write numbers like 12.5
, to represent numbers that are not
integral values. If you like, you can write something like
101873.000
, which really simply represents the integral value
101,873. Perl does not mind that you put the extra 0's on the end.
Probably the most complex method of expressing a numeric literal is
using what is called exponential notation. These are numbers of
the form
b * 10^x
, where b is some decimal number, positive or negative, and
x is some integer, positive or negative. Thus, you can express
very large numbers, or very small numbers that are mostly 0s
(either to the right or left of the decimal point) using this notation.
However, when you write such a number as a literal in Perl, you must
write it in the from bEx
, where b
and x
are the
desired base and exponent, but E
is the actual character,
E
(or e
, if you prefer). The examples of 5E-3
,
23e-100
, 2.3E-99
, and 23e6
in the code above show
how the exponential notation can be used.
Finally, if you write out a very large number, such as 23000000
,
you can place underscores inside the number to make it more
readable. 1 Thus, 23000000
is exactly the
same as 23_000_000
.