Allowed coercions
Syntaxset theNumber to 25.6 as real DescriptionA real is a positive or negative number that can include a decimal point, such as -512.5 or 3.14159265359 (the value of the pi predefined variable is a real value type). Use real when you want a variable to store a very high number. The largest positive value that a real number can reach with AppleScript 1.4.3 on OS 9 is 1.797693E+308. This very large number, however, can safely be exceeded with real data types under AppleScript 1.5.5/1.6 (Mac OS 9.1 and OS X). ExamplesThe second line of this example raises an error in AppleScript Version 1.4.3 and Script Editor: "The result of a numeric operation was too large": set theVar to 1.797693E+308 set theVar to theVar + 1 At any rate, this is a giant number. To use scientific notation, follow the real or floating-point number with the letter "e" (upper- or lowercase) along with an integer like 20 (e.g., 2.0e20 or 2.0e+20; the "+" is optional, any "-" sign is not). If the integer is a positive n,then the number is equal to real number * 10n; if n is negative then the number is equal to real number * 10-n. AppleScript converts to scientific notation the real numbers that are greater than or equal to 10,000.0 when the script is compiled. My machine also converts to scientific notation numbers that are less than or equal to 0.001, but the AppleScript Language Guide for AppleScript 1.3.7 ascribes this behavior to numbers less than or equal to 0.0001.
You can coerce an integer to a real, and AppleScript will drop a ".0" on the end of the number. However, you cannot coerce a real to an integer if the real has an actual fractional part. For instance, 6.3 cannot be coerced to an integer, but 6.0 can. In other words, AppleScript does not automatically chuck out the fractional part of a real when coercing it to an integer. It first determines whether the coercion is legal or not. This code is an illustration of this process: set theVar to 6.3 set theVar to theVar + 0.7 (* theVar is now 7.0 so it can be coerced to an integer *) set theVar to theVar as integer log theVar log class of theVar -- the class is integer |