我有一个CGFloat,我试图将其舍入到小数点后1位。根据NSLog:
,使用下面的代码,CGFloat四舍五入到37000000averageRating = floorf(averageRating * 10.0f + 0.5) / 10.0f;
然而,我的代码工作,这取决于if语句如何:
if (averageRating == 0.1f)
我需要删除零。我希望CGFloat始终为1位小数,因为我总是将它舍入到1 d.p.使用上面的floorf代码。
再次:如何从CGFloat中删除多余的零?所有帮助表示赞赏。
答案 0 :(得分:0)
无论两个浮点数是否相等,==运算符都将100%可靠地返回。但是,您认为应该给出相同结果的两个计算不一定会给出相同的结果,所以除非您确切知道自己在做什么,以及编译器正在做什么,否则将浮点数与0.1f进行比较是非常危险的去做。 (显然你不知道你在做什么,或者你不会问)。
解决方案非常简单:
double average_times_ten = round (averageRating * 10.0);
if (average_times_ten == 1.0) { ... }
除非你有充分的理由这样做,否则不要使用浮动,你可以在被问及时解释。使用双。