默认情况下3.2
被视为double
; 所以为了强制编译器将其视为float
,你需要f
在最后编写。
float a = 3.2; if ( a == 3.2 ) cout << "a is equal to 3.2"<<endl; else cout << "a is not equal to 3.2"<<endl; float b = 3.2f; if ( b == 3.2f ) cout << "b is equal to 3.2f"<<endl; else cout << "b is not equal to 3.2f"<<endl;
输出:
a不等于3.2 b等于3.2f
请在ideone上进行实验:http://www.ideone.com/WS1az
小数点和f有不同的目的,所以它不是真正的.f
你必须明白,在C和C ++中,所有内容都是打字的,包括文字。
3是字面整数。3.是文字双3.f是文字浮点数。
IEEE浮点数的精度低于双精度浮点数。float仅使用32位,22位尾数和10位指数(包括每个的符号位)。
double给出了更多的准确性,但有时你不需要这样的准确性(例如,如果你在计算的数字只是首先估计的数字),浮点数给出的就足够了,如果你存储了大量的数据(例如,处理大量时间序列数据),这可能比准确性更重要。
因此浮动仍然是一种有用的类型。
您不应该将此与printf和等效语句使用的符号混淆。