//ex2-4.cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main ()
{
float a = 0.1;
printf ("%d", int ( 2- a*a*100));
// printf ("%.10f", int ( 2 - a*a*100));
return 0;
}
对于这段代码,看起来显然会输出2-1也就是1,但是很神奇的是输出的是0!
然后我就把2-a * a * 100改成了a * a * 100,输出的确实是1
然后我把类型转换int去掉,发现输出的是1.000000
所以我推测是不是精度的问题?
但是我改成double输出还是不变,有没有大佬可以解释一下?QAQ