mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-18 02:47:36 +00:00
(Integer Basics): Clarify radix explanation.
(Predicates on Numbers): Minor clarification. (Comparison of Numbers): Minor clarification. Clarify eql. Typos in min, max. (Math Functions): Clarify overflow in expt.
This commit is contained in:
parent
e37d6e4c86
commit
4182ecfc37
1 changed files with 34 additions and 28 deletions
|
|
@ -73,14 +73,21 @@ initial sign and optional final period.
|
|||
@cindex hex numbers
|
||||
@cindex octal numbers
|
||||
@cindex reading numbers in hex, octal, and binary
|
||||
In addition, the Lisp reader recognizes a syntax for integers in
|
||||
bases other than 10: @samp{#B@var{integer}} reads @var{integer} in
|
||||
binary (radix 2), @samp{#O@var{integer}} reads @var{integer} in octal
|
||||
(radix 8), @samp{#X@var{integer}} reads @var{integer} in hexadecimal
|
||||
(radix 16), and @samp{#@var{radix}r@var{integer}} reads @var{integer}
|
||||
in radix @var{radix} (where @var{radix} is between 2 and 36,
|
||||
inclusively). Case is not significant for the letter after @samp{#}
|
||||
(@samp{B}, @samp{O}, etc.) that denotes the radix.
|
||||
The syntax for integers in bases other than 10 uses @samp{#}
|
||||
followed by a letter that specifies the radix: @samp{b} for binary,
|
||||
@samp{o} for octal, @samp{x} for hex, or @samp{@var{radix}r} to
|
||||
specify radix @var{radix}. Case is not significant for the letter
|
||||
that specifies the radix. Thus, @samp{#b@var{integer}} reads
|
||||
@var{integer} in binary, and @samp{#@var{radix}r@var{integer}} reads
|
||||
@var{integer} in radix @var{radix}. Allowed values of @var{radix} run
|
||||
from 2 to 36. For example:
|
||||
|
||||
@example
|
||||
#b101100 @result{} 44
|
||||
#o54 @result{} 44
|
||||
#x2c @result{} 44
|
||||
#24r1k @result{} 44
|
||||
@end example
|
||||
|
||||
To understand how various functions work on integers, especially the
|
||||
bitwise operators (@pxref{Bitwise Operations}), it is often helpful to
|
||||
|
|
@ -211,13 +218,12 @@ down to an integer.
|
|||
@node Predicates on Numbers
|
||||
@section Type Predicates for Numbers
|
||||
|
||||
The functions in this section test whether the argument is a number or
|
||||
whether it is a certain sort of number. The functions @code{integerp}
|
||||
and @code{floatp} can take any type of Lisp object as argument (the
|
||||
predicates would not be of much use otherwise); but the @code{zerop}
|
||||
predicate requires a number as its argument. See also
|
||||
@code{integer-or-marker-p} and @code{number-or-marker-p}, in
|
||||
@ref{Predicates on Markers}.
|
||||
The functions in this section test for numbers, or for a specific
|
||||
type of number. The functions @code{integerp} and @code{floatp} can
|
||||
take any type of Lisp object as argument (they would not be of much
|
||||
use otherwise), but the @code{zerop} predicate requires a number as
|
||||
its argument. See also @code{integer-or-marker-p} and
|
||||
@code{number-or-marker-p}, in @ref{Predicates on Markers}.
|
||||
|
||||
@defun floatp object
|
||||
This predicate tests whether its argument is a floating point
|
||||
|
|
@ -251,7 +257,7 @@ considered non-negative.
|
|||
This predicate tests whether its argument is zero, and returns @code{t}
|
||||
if so, @code{nil} otherwise. The argument must be a number.
|
||||
|
||||
These two forms are equivalent: @code{(zerop x)} @equiv{} @code{(= x 0)}.
|
||||
@code{(zerop x)} is equivalent to @code{(= x 0)}.
|
||||
@end defun
|
||||
|
||||
@node Comparison of Numbers
|
||||
|
|
@ -275,10 +281,11 @@ numbers or markers. However, it is a good idea to use @code{=} if you
|
|||
can, even for comparing integers, just in case we change the
|
||||
representation of integers in a future Emacs version.
|
||||
|
||||
Sometimes it is useful to compare numbers with @code{equal}; it treats
|
||||
two numbers as equal if they have the same data type (both integers, or
|
||||
both floating point) and the same value. By contrast, @code{=} can
|
||||
treat an integer and a floating point number as equal.
|
||||
Sometimes it is useful to compare numbers with @code{equal}; it
|
||||
treats two numbers as equal if they have the same data type (both
|
||||
integers, or both floating point) and the same value. By contrast,
|
||||
@code{=} can treat an integer and a floating point number as equal.
|
||||
@xref{Equality Predicates}.
|
||||
|
||||
There is another wrinkle: because floating point arithmetic is not
|
||||
exact, it is often a bad idea to check for equality of two floating
|
||||
|
|
@ -309,10 +316,10 @@ returns @code{t} if so, @code{nil} otherwise.
|
|||
@end defun
|
||||
|
||||
@defun eql value1 value2
|
||||
This function compares two floating point numbers like @code{=}, and
|
||||
compares two integers like @code{=}, and acts like @code{eq} in all
|
||||
other cases. Thus, @code{(eql 1.0 1)} returns @code{nil}, but
|
||||
@code{(eql 1.0 1.0)} and @code{(eql 1 1)} both return @code{t}.
|
||||
This function acts like @code{eq} except when both arguments are
|
||||
numbers. It compares numbers by type and numberic value, so that
|
||||
@code{(eql 1.0 1)} returns @code{nil}, but @code{(eql 1.0 1.0)} and
|
||||
@code{(eql 1 1)} both return @code{t}.
|
||||
@end defun
|
||||
|
||||
@defun /= number-or-marker1 number-or-marker2
|
||||
|
|
@ -345,7 +352,7 @@ otherwise.
|
|||
|
||||
@defun max number-or-marker &rest numbers-or-markers
|
||||
This function returns the largest of its arguments.
|
||||
If any of the argument is floating-point, the value is returned
|
||||
If any of the arguments is floating-point, the value is returned
|
||||
as floating point, even if it was given as an integer.
|
||||
|
||||
@example
|
||||
|
|
@ -360,7 +367,7 @@ as floating point, even if it was given as an integer.
|
|||
|
||||
@defun min number-or-marker &rest numbers-or-markers
|
||||
This function returns the smallest of its arguments.
|
||||
If any of the argument is floating-point, the value is returned
|
||||
If any of the arguments is floating-point, the value is returned
|
||||
as floating point, even if it was given as an integer.
|
||||
|
||||
@example
|
||||
|
|
@ -1147,8 +1154,7 @@ approximately.
|
|||
@defun expt x y
|
||||
This function returns @var{x} raised to power @var{y}. If both
|
||||
arguments are integers and @var{y} is positive, the result is an
|
||||
integer; in this case, it is truncated to fit the range of possible
|
||||
integer values.
|
||||
integer; in this case, overflow causes truncation, so watch out.
|
||||
@end defun
|
||||
|
||||
@defun sqrt arg
|
||||
|
|
|
|||
Loading…
Reference in a new issue