正确使用CGFloat

时间:2014-11-20 19:16:27

标签: ios objective-c syntax

有些程序员使用像这样的浮动

CGFloat itemsHeight = [m_subscriptions count] * 97.f;

有些像这样使用浮动

CGFloat itemsHeight = [m_subscriptions count] * 97.0f;

在放弃零时是否有任何副作用?

3 个答案:

答案 0 :(得分:1)

不,尾随零没有区别:浮点常量的值将保持不变。你需要一个点,否则编译器会报告语法错误。换句话说,[m_subscriptions count] * 97f将无法编译。

答案 1 :(得分:0)

没有副作用。这些都是相同数字的字面符号。

答案 2 :(得分:0)

无论你使用0.0,.0,还是0.0f甚至0f都没有太大的区别。 (有一些关于double和float)

如果你正在初始化一个变量,那就毫无意义了。编译器会为你做所有演员。

float a = 0; //Cast int 0 to float 0.0
float b = 0.0; //Cast 0.0 double to float 0.0 as by default floating point constants are double
float c = 0.0f // Assigning float to float. .0f is same as 0.0f

但如果你在表达中使用这些,那么这很有意义。

6/5变为1 6 / 5.0变为1.2(双倍值) 6 / 5.0f变为1.2(浮点值)

所以基本的区别是:

1.0或1.是双常数 1.0f是一个浮点常数

如果没有后缀,带有小数的文字(199.0)将被视为双精度浮点数。如果将其分配或传递给单精度变量或参数,编译器将(应该)发出警告。附加f告诉编译器您希望将文字视为单精度浮点数。