On Monday, 24 August 2015 at 17:26:12 UTC, Steven Schveighoffer wrote:

Note, this is NOT a D problem, this is a problem with floating ponit. And by problem, I mean feature-that-you-should-avoid :)

-Steve

Visual C++ 19.00.23026, x86, x64:

int _tmain(int argc, _TCHAR* argv[])
{
        double x = 1.2;
        printf("%d\r\n", (unsigned long long)(x * 10.0));
        double y = 1.2 * 10.0;
        printf("%d\r\n", ((unsigned long long)y));
        return 0;
}

Output:
12
12

Same output in debugger for an ARM Windows App.

C# 6.0:

static void Main(string[] args)
{
        double x = 1.2;
        WriteLine((ulong)(x * 10.0));
        double y = 1.2 * 10.0;
        WriteLine((ulong)y);
}

Output:
12
12

Same output in debugger for ARM in all flavours (Android, iOS, Windows)

It seems like a D problem.





Reply via email to