On 02/16/2014 01:42 PM, Andrej Mitrovic wrote:

> -----
> import std.math;
> import std.stdio;
>
> void main()
> {
>      writefln("nextUp of %a is %a", 1.0, 1.0.nextUp());

That line uses doubles.

>
>      real num = 1.0;
>      writefln("nextUp of %a is %a", num, num.nextUp());

That one uses reals.

> }
> -----
>
> This prints:
>
> nextUp of 0x1p+0 is 0x1.0000000000001p+0
> nextUp of 0x1p+0 is 0x1.0000000000000002p+0
>
> Any idea why the results are different?

There is no difference. They are both 1. ;)

The type of floating point literals is double. You are seeing the precision difference between doubles and reals.

Ali

Reply via email to