Casting double to ulong weirdness

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 25 04:14:39 PDT 2015


On 8/24/15 5:34 PM, "=?UTF-8?B?Ik3DoXJjaW8=?= Martins\" 
<marcioapm at gmail.com>\"" wrote:
> On Monday, 24 August 2015 at 21:03:50 UTC, Steven Schveighoffer wrote:

>> I understand the inconsistency, and I agree it is an issue that should
>> be examined. But the issue is entirely avoidable by not using
>> incorrect methods to convert from floating point to integer after
>> floating point operations introduce some small level of error.
>>
>> Perhaps there is some way to make it properly round in this case, but
>> I guarantee it will not fix all floating point errors.
>>
>
> What is the correct way to truncate, not round, a floating-point value
> to an integer?

auto result = cast(ulong)(x * 10.0 + x.epsilon);

-Steve


More information about the Digitalmars-d mailing list