#include
int main()
{
double fract=0;
int tmp;
//scanf(\"%lf\",&fract);
fract=0.312;
printf(\"%lf\",fract);
printf(\"\\n
Floating-point arithmetic is confusing, and not guaranteed to behave intuitively.
Here's a good reference document: What Every Computer Scientist Should Know About Floating-Point Arithmetic. It's a long document, because it's a complicated problem.
In summary: Don't use floating-point values if you are relying on exact values.