今天正好碰到除法运算结果一直是0的情况,所以记录下来,希望对大家有用。
示例
//结果为0
CGFloat tFloat = 10/1000;
原因
计算机中的运算有个原则:
相同数据类型的值才能进行运算,而且运算结果依然是同一种数据类型。因此,整数除于整数,求出来的结果依然是整数,会损失小数部分。
解决办法
//结果为0.01
//1
CGFloat tFloat = (CGFloat)10/1000;
//2
CGFloat tFloat = (CGFloat)10.0/1000;
- 对结果进行了类型转换
- 10.0是浮点型,1000是整型,因此会将4自动类型提升为浮点型后再进行运算