0

嗨,我对使用浮点数进行除法有很大疑问,这里是测试代码::

- (void)chuza
{

    float option1 = 0;
    float option2 = 0;


    option1 = 100/50;
    option2 = 50/100;

    NSLog(@"option1 :: %f",option1);
    NSLog(@"option2 :: %f",option2);

}

所以,我得到:

2012-10-19 16:21:45.405 Project[2023:14f03] option1 :: 2.000000
2012-10-19 16:21:45.405 Project[2023:14f03] option2 :: 0.000000

所以我的问题是:为什么浮动会像什么时候一样

分母 > 分子

但不喜欢

分子>分母??

谢谢!

4

3 回答 3

5

对我来说,这看起来很像整数除法,因为您要除以两个整数。将两个整数相除时(在大多数编程语言中,如果不是全部的话)会忽略除法的余数。

想想这条线是如何被评估的。首先计算整数除法,然后将整数结果转换为浮点数以存储在浮点变量中。

请注意,整数根本不存储任何小数,因此即使 0.999 作为整数也是 0。四舍五入不是问题。

这也不是关于分母大于分子的问题。尝试除以 100/30,结果将是 3,而不是 3.33333.. 就像浮点除法一样。

您可以通过将数字转换为浮点数或确保它们是浮点数来解决此问题。

铸件

option2 = ((float)50/(float)100);

分割花车

option2 = 50.0f/100.0f;
于 2012-10-19T05:31:28.513 回答
3

浮点数也不10050,它们是整数。这意味着您正在进行整数除法并将结果分配给浮点变量。由于整数除法会截断(丢弃小数结果),因此50/100产生0. 100 可以被 50 整除,这就是你得到2.000000结果的原因。75用and试试你的程序100,你会发现除了部门的发展方向之外,还有更多的工作要做。

于 2012-10-19T05:31:21.027 回答
2

它将您的数字视为整数,执行除法,然后将结果放入浮点数中。

试试这个选项2 = 50.0f/100;

于 2012-10-19T05:31:11.737 回答