iOS CGFloat结果为+inf

今天发现一个bug,顺便记录一下
需求:展示一张图片(服务器端提供一个img_ratio字段来告诉你宽高比,图片宽度是屏幕宽度)

我这样写的

 CGFloat imageHeight =HSWidth/[imgDic[@"img_ratio"] floatValue];
 [image mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.imageBackView).offset(self.cellHeight+MarginNormal);
                make.left.right.equalTo(self.imageBackView);
                make.height.mas_equalTo(imageHeight);
            }];

Bug:发现服务器img_ratio 为0时崩溃在masonry布局上
断点输出

屏幕快照 .png

解决:就是判断一下等于0然后return喽

if ([imgDic[@"img_ratio"] floatValue] == 0) {
                return;
            }

原因:0作为被除数然后被强转成了float类型导致得到的结果是无穷大,但是两个整型数相运算得到是还是整型

//结果为0.468
CGFloat tFloat = (CGFloat)375/800;
//结果为0
CGFloat tFloat = 375/800;
//结果为0
CGFloat tFloat = 1/0;
//结果为+lnf 代表正无穷
CGFloat tFloat = (CGFloat)1/0;

你可能感兴趣的:(iOS CGFloat结果为+inf)