Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: forcing float arithmetic.

On 2021-03-24 2:59 p.m., Bart Schaefer wrote:
On Wed, Mar 24, 2021 at 2:54 PM Roman Perepelitsa
<roman.perepelitsa@xxxxxxxxx> wrote:
The behavior of zsh in this regard is consistent with C and all languages inspired by it (C++, Java, C# and many, many others). This is really working as intended.

#include <stdio.h>
void main() {
  int x = 3, y = 7;
  float z = (x/y);
  printf("%g\n", z);

Long time since I did any floating point in C, so I'll take you guy's word for it.  Final shot would that since one can force the conversion by, say, multiplying by 1.0, which is otherwise pointless, one could imagine some option whereby the bother is simply not required.

(( aa = ((2 * nn) - 1) / (nn**2.0) ))

... in that case the denominator is not changed in any way, yet if flags that the division should be passed as a float.  Seems an awkward way of getting the conversion.  How is 2^2 different from 2^2.0 ?  If 'aa' was an integer then of course the result must be rounded, but it still seems to me the float should receive the actual result.  One of my little whines, nothing of substance. Still one might dream of setopt AUTO_FLOAT.

Messages sorted by: Reverse Date, Date, Thread, Author