https://issues.dlang.org/show_bug.cgi?id=14958
--- Comment #6 from Steven Schveighoffer <[email protected]> --- I understand that fp can vary based on compiler selection of instructions, and this is one of those instances. However, the type system doesn't reflect reality here. Even this prints 11: writeln(cast(ulong)(cast(double)(x * 10.0))); The cast to double is ignored because typeof(x * 10.0) *is* already double. But it's not actually a double in generated code. I think that's where I see there is an issue. Only when you actually assign it to a double does it become concretely double. The workaround (using to!ulong) may cease to work at some point also, because inlining could remove that storage to a double. --
