User Tools

System Class FLOAT

Class Precedence List

float, real, number, t


A float is a mathematical rational (but not a Common Lisp rational) of the form s * f * be - p, where s is +1 or -1, the sign; b is an integer greater than~1, the base or radix of the representation; p is a positive integer, the precision (in base-b digits) of the float; f is a positive integer between bp - 1 and bp - 1 (inclusive), the significand; and e is an integer, the exponent. The value of p and the range of~e depends on the implementation and on the type of float within that implementation. In addition, there is a floating-point zero; depending on the implementation, there can also be a "minus zero". If there is no minus zero, then 0.0 and~-0.0 are both interpreted as simply a floating-point zero. (= 0.0 -0.0) is always true. If there is a minus zero, (eql -0.0 0.0) is false, otherwise it is true.

\reviewer{Barmar: What about IEEE NaNs and infinities?}

\reviewer{RWK: In the following, what is the "ordering"? precision? range? Can there be additional subtypes of float or does "others" in the list of four?}

The types short-float, single-float, double-float, and long-float are subtypes of float. Any two of them must be either disjoint types or the same type; if the same type, then any other types between them in the above ordering must also be the same type. For example, if the type single-float and the type long-float are the same type, then the type double-float must be the same type also.

Compound Type Specifier Kind


Compound Type Specifier Syntax

  • float [lower-limit [upper-limit]]

Compound Type Specifier Arguments

Compound Type Specifier Description

This denotes the floats on the interval described by lower-limit and upper-limit.

See Also

  • {\figref\SyntaxForNumericTokens}
  • {\secref\NumsFromTokens}
  • {\secref\PrintingFloats}


Note that all mathematical integers are representable not only as Common Lisp reals, but also as complex floats. For example, possible representations of the mathematical number 1 include the integer 1, the float 1.0, or the complex #C(1.0 0.0).