对于假定的浮点值或双精度值,写0.0,0.0f或.0f而不是简单0更好吗?

Nic*_*ini 14 objective-c ios

你好,所有都在标题中.该问题尤其适用于所有可能类似的值NSTimeInterval,CGFloat或任何其他浮点数或双精度变量.谢谢.

编辑:我要求值分配而不是字符串格式.

编辑2:问题是确实0为一个浮点数指定一个平原,或者一个双关语比f一个结尾的任何东西都要糟糕.

Ano*_*dya 23

基本区别如下:

1.0或者1.是双常数

1.0f 是一个浮点常数

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

  • 请注意,对于64位CGFloat现在是双倍的,所以,当你的应用程序转换为64位时,远程所有'f'后缀可能会很痛苦 (4认同)

Ind*_*ore 7

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

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
Run Code Online (Sandbox Code Playgroud)

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

6/5 becomes 1
6/5.0 becomes 1.2 (double value)
6/5.0f becomes 1.2 (float value)
Run Code Online (Sandbox Code Playgroud)