从CGFloat中删除零

时间:2015-09-12 10:29:37

标签: objective-c iphone rounding cgfloat

我有一个CGFloat,我试图将其舍入到小数点后1位。根据NSLog:

,使用下面的代码,CGFloat四舍五入到37000000
averageRating = floorf(averageRating * 10.0f + 0.5) / 10.0f;

然而,我的代码工作,这取决于if语句如何:

if (averageRating == 0.1f)

我需要删除零。我希望CGFloat始终为1位小数,因为我总是将它舍入到1 d.p.使用上面的floorf代码。

再次:如何从CGFloat中删除多余的零?所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

无论两个浮点数是否相等,==运算符都将100%可靠地返回。但是,您认为应该给出相同结果的两个计算不一定会给出相同的结果,所以除非您确切知道自己在做什么,以及编译器正在做什么,否则将浮点数与0.1f进行比较是非常危险的去做。 (显然你不知道你在做什么,或者你不会问)。

解决方案非常简单:

double average_times_ten = round (averageRating * 10.0);
if (average_times_ten == 1.0) { ... }

除非你有充分的理由这样做,否则不要使用浮动,你可以在被问及时解释。使用双。