53
LEARNING ACTIONSCRIPT 3.0
ActionScript language and syntax
Last updated 5/2/2011
int data type
The int data type is stored internally as a 32-bit integer and includes the set of integers from
-2,147,483,648 (-2
31
) to 2,147,483,647 (2
31
- 1), inclusive. Previous versions of ActionScript offered only the Number
data type, which was used for both integers and floating-point numbers. In ActionScript 3.0, you now have access to
low-level machine types for 32-bit signed and unsigned integers. If your variable does not need floating-point
numbers, using the int data type instead of the Number data type is faster and more efficient.
For integer values outside the range of the minimum and maximum int values, use the Number data type, which can
handle values between positive and negative 9,007,199,254,740,992 (53-bit integer values). The default value for
variables that are of the data type int is 0.
Null data type
The Null data type contains only one value, null. This is the default value for the String data type and all classes that
define complex data types, including the Object class. None of the other primitive data types, such as Boolean,
Number, int, and uint, contain the value
null. At run time, the value null is converted to the appropriate default value
if you attempt to assign
null to variables of type Boolean, Number, int, or uint. You cannot use this data type as a type
annotation.
Number data type
In ActionScript 3.0, the Number data type can represent integers, unsigned integers, and floating-point numbers.
However, to maximize performance, you should use the Number data type only for integer values larger than the 32-
bit
int and uint types can store or for floating-point numbers. To store a floating-point number, include a decimal
point in the number. If you omit a decimal point, the number is stored as an integer.
The Number data type uses the 64-bit double-precision format as specified by the IEEE Standard for Binary Floating-
Point Arithmetic (IEEE-754). This standard dictates how floating-point numbers are stored using the 64 available bits.
One bit is used to designate whether the number is positive or negative. Eleven bits are used for the exponent, which
is stored as base 2. The remaining 52 bits are used to store the significand (also called the mantissa), which is the
number that is raised to the power indicated by the exponent.
By using some of its bits to store an exponent, the Number data type can store floating-point numbers significantly
larger than if it used all of its bits for the significand. For example, if the Number data type used all 64 bits to store the
significand, it could store a number as large as 2
65
- 1. By using 11 bits to store an exponent, the Number data type can
raise its significand to a power of 2
1023
.
The maximum and minimum values that the Number type can represent are stored in static properties of the Number
class called
Number.MAX_VALUE and Number.MIN_VALUE.
Number.MAX_VALUE == 1.79769313486231e+308
Number.MIN_VALUE == 4.940656458412467e-324
Although this range of numbers is enormous, the cost of this range is precision. The Number data type uses 52 bits to
store the significand, with the result that numbers that require more than 52 bits to represent precisely, such as the
fraction 1/3, are only approximations. If your application requires absolute precision with decimal numbers, you need
to use software that implements decimal floating-point arithmetic as opposed to binary floating-point arithmetic.
When you store integer values with the Number data type, only the 52 bits of the significand are used. The Number
data type uses these 52 bits and a special hidden bit to represent integers from -9,007,199,254,740,992 (-2
53
) to
9,007,199,254,740,992 (2
53
).
The NaN value is not only used as the default value for variables of type Number, but also as the result of any operation
that should return a number but does not. For example, if you attempt to calculate the square root of a negative
number, the result is
NaN. Other special Number values include positive infinity and negative infinity.