我正在使用iOS项目,我必须做一些数学运算。任何人都可以向我解释为什么这两个实现会返回不同的结果吗?
float total = 31/30;
NSLog(@"%f", total); // returns 1.00000 in console
float total2 = 31/30.0;
NSLog(@"%f", total2); // returns 1.03333 in console
答案 0 :(得分:1)
在大多数计算机语言中,涉及两个整数的除法将得到一个整数结果,即实际结果的最低点。
在C分区中,结果的类型是计算中最精确数字的类型。在您的第一个示例中,31
和30
都是整数,因此结果是整数1
,它被强制转换为浮点数以生成1.00
。在第二个示例中,虽然31
是整数,但30.0
是文字浮点数,并且计算具有浮点结果,该结果存储在变量(1.033333...
)中。