使用Objective-C的@property指令,我可以声明将自动创建getter和setter方法的属性。我无法想到使用实例变量的任何特殊原因,我必须编写自己的setter和getter,但我确信必须有一个例子,更优选使用实例变量。有没有理由使用实例变量而不是属性?它有什么实际的例子吗?
答案 0 :(得分:2)
问题在于这一行
slope = (line_cordinates[3] - line_cordinates[1]) / (line_cordinates[2] - line_cordinates[0]);
slope
被声明为float
,但line_cordinates
是int
的数组。
所以你在右边做了int
数学的所有数学运算,然后将它分配给float
。因此,所有int
操作的最终结果都隐式转换为float
,但到那时你已经失去了截断等的精度。
最快的解决方法是简单地声明
float line_cordinates[4] = {0.0, 0.0, 0.0, 0.0};
答案 1 :(得分:2)
使用,
slope = static_cast<float>((line_cordinates[3] - line_cordinates[1])) / (line_cordinates[2] - line_cordinates[0]);
您需要对右侧的任何操作数进行类型转换才能浮动。因此表达式将导致浮动。
int op int = int
float op int = float