Stop to! rounding?
Jonathan M Davis
jmdavisProg at gmx.com
Tue Jul 2 22:09:37 PDT 2013
On Wednesday, July 03, 2013 07:04:47 cal wrote:
> On Wednesday, 3 July 2013 at 04:32:15 UTC, Jonathan M Davis wrote:
> > On Wednesday, July 03, 2013 06:23:12 Josh wrote:
> >> writeln(to!double("151.42499")); //prints 151.425
> >>
> >> Is there any way to stop this rounding?
> >
> > No. double can't hold the value 151.42499. There are _tons_ of
> > values that it
> > can't hold exactly. The same goes for float and real. Floating
> > point values are
> > rounded all the time. Note that
> >
> > double d = 151.42499;
> > writeln(d);
> >
> > prints exactly the same thing as your example.
> >
> > - Jonathan M Davis
>
> void main()
> {
> double d = 151.42499;
> assert(d == 151.42499);
> }
>
> The rounding occurs in writeln surely.
That's true because _both_ of the floating point values there get rounded to
151.425, and 151.425 is equal to 151.425. writeln is not doing anything wrong.
I highly suggest that you read this:
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list