Thread overview
cast(int) real BUG
Jun 13, 2003
Dario
Jun 13, 2003
Dario
Jun 14, 2003
Walter
June 13, 2003
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?


June 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


June 14, 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.