D - cast(int) real BUG
int main()
{
real a = 0.9;
int b = cast(int) a;
printf("%i", b);
return 0;
}
This prints -2147483648...
The compiler casted 'a' to uint.
If I change it to "printf("%u", b);" it correctly prints 0.
Anyway, does a casted-to-int floating-point always floor the value?
Jun 13 2003
int main()
{
real a = 0.9;
ulong b = cast(ulong) a;
printf("%u", cast(uint) b);
return 0;
}
Prints: 1717987328
In hex it would be: 0x66666800
I have no idea about what's happening here.
ulong b = cast(ulong)cast(float) a; <- this fails as well
ulong b = cast(ulong)cast(double) a; <- OK
Jun 13 2003
"Dario" <supdar yahoo.com> wrote in message news:bccpsa$14je$1 digitaldaemon.com...int main() { real a = 0.9; int b = cast(int) a; printf("%i", b); return 0; } This prints -2147483648... The compiler casted 'a' to uint. If I change it to "printf("%u", b);" it correctly prints 0.This looks like a bug with %i.Anyway, does a casted-to-int floating-point always floor the value?Yes.
Jun 14 2003









"Dario" <supdar yahoo.com> 