Casting double to ulong weirdness

bachmeier via Digitalmars-d digitalmars-d at puremagic.com
Mon Aug 24 12:53:08 PDT 2015


On Monday, 24 August 2015 at 19:23:44 UTC, Steven Schveighoffer 
wrote:

>
> real y = x * 10.0;
> writeln(y.to!ulong); // 11
>
> to! does not do anything different than cast. What is happening 
> here is the implicit cast from real to double. D treats the 
> result of x * 10.0 as type double, but it's done at real 
> precision. In that conversion, the error is hidden by a 
> rounding automatically done by the processor I think.
>
> -Steve

Yes, I was mistaken. You have to use roundTo or std.math.round. 
to! and cast both truncate.


More information about the Digitalmars-d mailing list