result
是 float
类型,我有三种编写代码的方法:
if (result < 0)
if (result < 0.)
if (result < 0.f)
据我所知,
0
隐式为int
,0.
隐式为double
,0.f
是float
类型。
我更喜欢使用第一种方法,因为它清晰简单,但我是否在强制进行类型转换?
从概念上讲,确实进行了转换。
但是你应该将这样微小的考虑推迟给编译器,并写出最清晰的代码,对我来说是:
if (result < 0)
float
还是double
时,请考虑哪个更快速,具体请参考double or float, which is faster?。0
是最好的选择。至少 0
不会对 result
进行转换,而 0.
可能会导致转换。 - StoryTeller - Unslander Monicaresult < 0.f
是清晰的,而result < 0.
则是一种误导性的result
类型。result < 0
则是"中立"的。 - Jarod42
if (result < 0.f)
,因为当我看到if (result < 0)
时,我往往会认为result
是整数。 - Olivier Sohnif (result < 0.0)
。使用0.0
告诉用户该值是浮点数。它是double
而不是float
的事实不那么重要,任何隐式转换都是精确的。(并且,根据上下文,result
应该一开始就是double
而不是float
是完全可能的。)浮点常量可以以.
结尾,但我发现0.0
比0.
更易读。 - Keith Thompsonfloat f=0.0f; for(int i=0; i<100; ++i) f+=0.01f;
- 在IEEE平台上,结果将不等于1.0f
。(因此,在这种情况下,我更喜欢明确地写出0.0f
,以便显然比较对浮点行为做出了假设。) - Arne Vogel