## digitalmars.D.learn - Strange result with nextUp for reals

Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
```-----
import std.math;
import std.stdio;

void main()
{
writefln("nextUp of %a is %a", 1.0, 1.0.nextUp());

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

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?
```
Feb 16 2014
=?UTF-8?B?QWxpIMOHZWhyZWxp?= <acehreli yahoo.com> writes:
```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
```
Feb 16 2014
"Casper =?UTF-8?B?RsOmcmdlbWFuZCI=?= <shorttail hotmail.com> writes:
```If you swap the line to
writefln("nextUp of %a is %a", 1.0L, 1.0L.nextUp());
you get the same result as the second case.
```
Feb 16 2014