为什么这些浮点计算会返回不同的值?

时间:2014-01-03 20:41:22

标签: objective-c c math floating-point

我正在使用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

1 个答案:

答案 0 :(得分:1)

在大多数计算机语言中,涉及两个整数的除法将得到一个整数结果,即实际结果的最低点。

在C分区中,结果的类型是计算中最精确数字的类型。在您的第一个示例中,3130都是整数,因此结果是整数1,它被强制转换为浮点数以生成1.00。在第二个示例中,虽然31是整数,但30.0是文字浮点数,并且计算具有浮点结果,该结果存储在变量(1.033333...)中。