mirror of
https://github.com/lua/lua
synced 2024-12-28 05:09:42 +03:00
Manual a little more clear about string->number coersions
This commit is contained in:
parent
81f2401c6d
commit
e174f43807
@ -1406,10 +1406,9 @@ It has the following syntax:
|
||||
exp @bnfter{,} exp @bnfopt{@bnfter{,} exp} @Rw{do} block @Rw{end}}
|
||||
}
|
||||
The given identifier (@bnfNter{Name}) defines the control variable,
|
||||
which is local to the loop body (@emph{block}).
|
||||
which is a new variable local to the loop body (@emph{block}).
|
||||
|
||||
The loop starts by evaluating once the three control expressions;
|
||||
they must all result in numbers.
|
||||
The loop starts by evaluating once the three control expressions.
|
||||
Their values are called respectively
|
||||
the @emph{initial value}, the @emph{limit}, and the @emph{step}.
|
||||
If the step is absent, it defaults @N{to 1}.
|
||||
@ -1417,8 +1416,9 @@ If the step is absent, it defaults @N{to 1}.
|
||||
If both the initial value and the step are integers,
|
||||
the loop is done with integers;
|
||||
note that the limit may not be an integer.
|
||||
Otherwise, the loop is done with floats.
|
||||
(Beware of floating-point accuracy in this case.)
|
||||
Otherwise, the three values are converted to
|
||||
floats and the loop is done with floats.
|
||||
Beware of floating-point accuracy in this case.
|
||||
|
||||
After that initialization,
|
||||
the loop body is repeated with the value of the control variable
|
||||
@ -1773,9 +1773,24 @@ If it does, that representation is the result.
|
||||
Otherwise, the conversion fails.
|
||||
|
||||
Several places in Lua coerce strings to numbers when necessary.
|
||||
In particular,
|
||||
the string library sets metamethods that try to coerce
|
||||
strings to numbers in all arithmetic operations.
|
||||
If the conversion fails,
|
||||
the library calls the metamethod of the other operand
|
||||
(if present) or it raises an error.
|
||||
Note that bitwise operators do not do this coercion.
|
||||
|
||||
Nonetheless, it is always a good practice not to rely on these
|
||||
implicit coercions, as they are not always applied;
|
||||
in particular, @T{"1"==1} is false and @T{"1"<1} raises an error
|
||||
@see{rel-ops}.
|
||||
These coercions exist mainly for compatibility and may be removed
|
||||
in future versions of the language.
|
||||
|
||||
A string is converted to an integer or a float
|
||||
following its syntax and the rules of the Lua lexer.
|
||||
(The string may have also leading and trailing whitespaces and a sign.)
|
||||
The string may have also leading and trailing whitespaces and a sign.
|
||||
All conversions from strings to numbers
|
||||
accept both a dot and the current locale mark
|
||||
as the radix character.
|
||||
@ -1783,15 +1798,9 @@ as the radix character.
|
||||
If the string is not a valid numeral,
|
||||
the conversion fails.
|
||||
If necessary, the result of this first step is then converted
|
||||
to the required number subtype following the previous rules
|
||||
to a specific number subtype following the previous rules
|
||||
for conversions between floats and integers.
|
||||
|
||||
The string library uses metamethods that try to coerce
|
||||
strings to numbers in all arithmetic operations.
|
||||
If the conversion fails,
|
||||
the library calls the metamethod of the other operand
|
||||
(if present) or it raises an error.
|
||||
|
||||
The conversion from numbers to strings uses a
|
||||
non-specified human-readable format.
|
||||
To convert numbers to strings in any specific way,
|
||||
@ -7687,8 +7696,8 @@ This library provides basic mathematical functions.
|
||||
It provides all its functions and constants inside the table @defid{math}.
|
||||
Functions with the annotation @St{integer/float} give
|
||||
integer results for integer arguments
|
||||
and float results for float (or mixed) arguments.
|
||||
the rounding functions
|
||||
and float results for non-integer arguments.
|
||||
The rounding functions
|
||||
@Lid{math.ceil}, @Lid{math.floor}, and @Lid{math.modf}
|
||||
return an integer when the result fits in the range of an integer,
|
||||
or a float otherwise.
|
||||
@ -7843,7 +7852,7 @@ The results from this function have good statistical qualities,
|
||||
but they are not cryptographically secure.
|
||||
(For instance, there are no guarantees that it is hard
|
||||
to predict future results based on the observation of
|
||||
some number of previous results.)
|
||||
some previous results.)
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user