*X-seq*: zsh-users 26596*From*: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>*To*: zsh-users@xxxxxxx*Subject*: Re: forcing float arithmetic.*Date*: Thu, 25 Mar 2021 01:36:41 +0000*Archived-at*: <https://zsh.org/users/26596>*Archived-at*: <http://www.zsh.org/sympa/arcsearch_id/zsh-users/2021-03/20210325013641.GE18178%40tarpaulin.shahaf.local2>*In-reply-to*: <22260ea8-adec-6e16-9250-c2c2ab31fcba@eastlink.ca>*List-id*: <zsh-users.zsh.org>*References*: <f09863a2-0af9-dbff-08b9-6f595cd7e164@eastlink.ca> <CAH+w=7YJSqb+twS1X60LoJgVD95hAnJK3AAL6cA9tcafH2gqUg@mail.gmail.com> <aa6c84af-5a8c-e52a-ccb3-6a666ca2553c@eastlink.ca> <CAN=4vMq_i_FDqLbnVtZdbPEb3M58qoDdFzvf8mpQJQomtZLjHQ@mail.gmail.com> <CAH+w=7bOsdz17cfXTbNbwYXTJW_M9r67BnqVbNqkATZcU31=eQ@mail.gmail.com> <22260ea8-adec-6e16-9250-c2c2ab31fcba@eastlink.ca>

Ray Andrews wrote on Wed, Mar 24, 2021 at 18:12:29 -0700: > 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. > > Proof: > > > > #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. The «/» operator is defined to perform integer division (discarding the remainder) when both of its arguments are integers, and floating-point division otherwise. That _is_ inconsistent, in a way, since in C it's not possible to implement a two-argument function that has the same semantics as the «/» operator for both integral and floating-point types… but that's how it is. > One of my little whines, nothing of substance. Still one might dream > of setopt AUTO_FLOAT. Python 3's division operator always returns floats. Daniel

**Follow-Ups**:**Re: forcing float arithmetic.***From:*Ray Andrews

**References**:**forcing float arithmetic.***From:*Ray Andrews

**Re: forcing float arithmetic.***From:*Bart Schaefer

**Re: forcing float arithmetic.***From:*Ray Andrews

**Re: forcing float arithmetic.***From:*Roman Perepelitsa

**Re: forcing float arithmetic.***From:*Bart Schaefer

**Re: forcing float arithmetic.***From:*Ray Andrews

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