Strange result with nextUp for reals

Ali Çehreli acehreli at yahoo.com
Sun Feb 16 13:48:33 PST 2014


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



More information about the Digitalmars-d-learn mailing list