Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #138968

Re: A final word on casting.

From James Kuyper <jameskuyper@alumni.caltech.edu>
Newsgroups comp.lang.c
Subject Re: A final word on casting.
Date 2018-12-23 10:56 -0500
Organization A noiseless patient Spider
Message-ID <pvob78$3pe$1@dont-email.me> (permalink)
References (1 earlier) <1YKTD.30400$CD3.15082@fx05.am4> <87k1k0ie66.fsf@bsb.me.uk> <NaNTD.109597$krL1.91@fx15.am4> <875zvki950.fsf@bsb.me.uk> <fabc96a8-762e-430e-a567-8658f60fe0d5@googlegroups.com>

Show all headers | View raw


On 12/23/18 10:08, chanrasjid@gmail.com wrote:
> On Sunday, December 23, 2018 at 10:57:14 PM UTC+8, Ben Bacarisse wrote:
>> Bart <bc@freeuk.com> writes:
>>
>>> On 23/12/2018 13:08, Ben Bacarisse wrote:
>>>> Bart <bc@freeuk.com> writes:
>>>
>>>>> Try:
>>>>>
>>>>> printf("%d\n", (int)1.9999999999999999999999999999999);
>>>>>
>>>>> I seem to get the answer 2.
>>>>
>>>> Are you really puzzled by that?
>>>
>>> Actually, yes. It means that (int)1.something will usually be 1 but
>>> sometimes 2.
>>
>> At least you won't be puzzled any more.
>>
>> -- 
>> Ben.
> 
> I think it is reasonable. C gives the closest double to represent 1.999... and it is 2.0; So (int) x gives the integral part is "almost" official. 


"For decimal floating constants, and also for hexadecimal floating
constants when FLT_RADIX is not a power of 2, the result is either the
nearest representable value, or the larger or smaller representable
value immediately adjacent to the nearest representable value, chosen in
an implementation-defined manner." (6.4.4.2p3).

For that particular number, given the large number of 9's following the
1, on most systems 2.0 would be the nearest representable value. While
the standard permits that constant to represent either the larger or
smaller representable values adjacent to that value, I think it would be
a poor-quality implementation that represented that constant with any
value other than 2.0. Having (int)1.9999999999999999999999999999999 give
2 rather than 1 as a result is therefore certainly permissible behavior,
and is also the most likely result.

Note that "For hexadecimal floating constants when FLT_RADIX is a power
of 2, the result is
correctly rounded.", which gives the implementation less freedom than it
has when that case doesn't apply. That's one of the key reasons for
using hexadecimal floating constants.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

A final word on casting. chanrasjid@gmail.com - 2018-12-23 03:02 -0800
  Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 12:11 +0000
    Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-23 13:08 +0000
      Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 14:43 +0000
        Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-23 14:56 +0000
          Re: A final word on casting. chanrasjid@gmail.com - 2018-12-23 07:08 -0800
            Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 15:55 +0000
              Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 16:07 +0000
              Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-23 08:21 -0800
              Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-23 17:56 +0000
                Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 19:23 +0000
                Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-23 20:12 +0000
                Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-23 14:06 -0800
                Re: A final word on casting. Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-28 09:34 -0800
                Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-28 20:29 +0000
                Re: A final word on casting. Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-28 15:07 -0800
                Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2018-12-28 20:56 -0500
                Re: A final word on casting. Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-29 09:22 -0800
                Re: A final word on casting. Tim Rentsch <txr@alumni.caltech.edu> - 2019-01-01 13:27 -0800
                Re: A final word on casting. Bart <bc@freeuk.com> - 2019-01-02 01:07 +0000
                Re: A final word on casting. Bart <bc@freeuk.com> - 2019-01-03 18:55 +0000
                Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2019-01-03 22:27 -0500
                Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-01-04 16:25 -0500
                Re: A final word on casting. Ike Naar <ike@iceland.freeshell.org> - 2018-12-28 19:10 +0000
                Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-28 12:33 -0800
                Re: A final word on casting. "Chris M. Thomasson" <invalid_chris_thomasson@invalid.invalid> - 2018-12-23 14:11 -0800
                Re: A final word on casting. Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2018-12-24 02:54 -0800
                Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-24 03:24 -0800
                Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-24 03:29 -0800
                Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-24 03:45 -0800
                Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-24 13:44 +0000
                Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2018-12-24 08:51 -0500
              Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2018-12-23 14:53 -0500
                Re: A final word on casting. Robert Wessel <robertwessel2@yahoo.com> - 2018-12-24 09:39 -0600
                Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2018-12-24 13:38 -0500
              Re: A final word on casting. Manfred <noname@add.invalid> - 2018-12-23 21:22 +0100
              Re: A final word on casting. Manfred <noname@add.invalid> - 2018-12-23 21:33 +0100
            Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-23 10:56 -0500
              Re: A final word on casting. Sjouke Burry <burrynulnulfour@ppllaanneett.nnll> - 2018-12-23 17:18 +0100
        Re: A final word on casting. Bart <bc@freeuk.com> - 2018-12-23 20:03 +0000
    Re: A final word on casting. "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2018-12-28 14:47 -0500
  Re: A final word on casting. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2018-12-23 12:24 +0000
  Re: A final word on casting. Richard Damon <Richard@Damon-Family.org> - 2018-12-23 07:28 -0500
    Re: A final word on casting. Tim Rentsch <txr@alumni.caltech.edu> - 2018-12-28 07:50 -0800
  Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-23 04:35 -0800
    Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-23 04:42 -0800
      Re: A final word on casting. fir <profesor.fir@gmail.com> - 2018-12-23 04:52 -0800
  Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-23 10:28 -0500
  Re: A final word on casting. Barry Schwarz <schwarzb@dqel.com> - 2018-12-23 11:39 -0800
    Re: A final word on casting. Ike Naar <ike@iceland.freeshell.org> - 2018-12-24 07:56 +0000
  Re: A final word on casting. chanrasjid@gmail.com - 2018-12-24 14:03 -0800
    Re: A final word on casting. Barry Schwarz <schwarzb@dqel.com> - 2018-12-24 14:39 -0800
      Re: A final word on casting. chanrasjid@gmail.com - 2018-12-24 14:50 -0800
        Re: A final word on casting. Keith Thompson <kst-u@mib.org> - 2018-12-24 15:34 -0800
      Re: A final word on casting. Keith Thompson <kst-u@mib.org> - 2018-12-24 15:23 -0800
        Re: A final word on casting. chanrasjid@gmail.com - 2018-12-24 20:34 -0800
    Re: A final word on casting. Keith Thompson <kst-u@mib.org> - 2018-12-24 14:52 -0800
      Re: A final word on casting. chanrasjid@gmail.com - 2018-12-24 20:25 -0800
    Re: A final word on casting. James Kuyper <jameskuyper@alumni.caltech.edu> - 2018-12-24 17:52 -0500
    Re: A final word on casting. luser droog <luser.droog@gmail.com> - 2018-12-24 21:27 -0800
      Re: A final word on casting. luser droog <luser.droog@gmail.com> - 2018-12-24 21:39 -0800
      Re: A final word on casting. chanrasjid@gmail.com - 2018-12-24 22:36 -0800

csiph-web