Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: why do ceil/floor give the decimal dot?
On 2015-05-14 10:54:26 -0700, Bart Schaefer wrote:
> No, I mean that looking at this:
>
> torch% float X=27
> torch% print $X
> 2.700000000e+01
> torch% print $(( X ))
> 27.
> torch% printf "%f\n" $X
> 27.000000
> torch% printf "%g\n" $X
> 27
>
> One might wonder why there are four different representations of the
> same number, and we could therefore discuss whether some of them should
> be unified. This is not the same discussion as whether they should be
> converted to integers.
Concerning the accuracy:
ypig% float x=$((1./3))
ypig% print $x
3.333333333e-01
ypig% print $((x))
0.33333333333333331
ypig% printf "%f\n" $x
0.333333
ypig% printf "%g\n" $x
0.333333
The last two are specified by C, and I suppose that $((x)) gives full
accuracy, i.e. if the decimal number is re-read as a floating-point
value, the original value must be recovered exactly.
Concerning the first one, I wonder why there are "typeset -E" (default
for "float" as used above) and "typeset -F". The way a value is output
shouldn't come from its declaration. IMHO, there should be a single
floating-point datatype, not one for each output format.
BTW, there is a bug in zsh 5.0.7:
ypig% typeset -F 3 x=$((17))
ypig% print $x
17.000
ypig% typeset -F 2 x=$((17))
ypig% print $x
17.00
ypig% typeset -F 1 x=$((17))
typeset: invalid base (must be 2 to 36 inclusive): 1
It is not a base here.
--
Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author