Hello rmcguire,

why is this not a compiler bug?
because:
import std.stdio;
void main() {
float f=0.01;
writefln("%0.2f->%d",f,cast(int)(f*100f));
writefln("%0.2f->%d",f,cast(int)(.01*100f));
writefln("%0.2f->%f",f,(f*100f));
}
results in:
0.01->0
0.01->1
0.01->1.000000
I would say something is dodgy.

-Rory


I think this may be case of:
At comple time floating point computations may be done at a higher precision than run time.

http://www.digitalmars.com/d/2.0/function.html#interpretation

It seems that .01*100f is computed at compile time.
try declarting float f as const or invariant and see what happens (I'm not sure..)


Reply via email to