嗨我怀疑使用花车进行划分, 这里测试代码::
- (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
所以我的问题是: 为什么浮动会像
时那样分母>分子
但不喜欢
分子>分母??
谢谢!
答案 0 :(得分:5)
这对我来说很像integer division,因为你要划分两个整数。当划分两个整数(在大多数情况下,如果不是所有编程语言中)时,忽略除法的其余部分。
考虑如何评估该行。首先计算整数除法,然后将整数结果强制转换为浮点数,以存储在float变量中。
请注意,整数根本不存储任何小数,所以即使0.999作为整数也是0.这不是关于舍入的问题。
这也不是关于分子大于分子的分母。尝试除以100/30,结果将是3,而不是3.33333 ..因为它将用于浮动除法。
您可以通过将数字转换为浮点数或确保它们是浮点数来解决此问题。
option2 = ((float)50/(float)100);
option2 = 50.0f/100.0f;
答案 1 :(得分:3)
100
和50
都不是浮点数,它们是整数。这意味着您正在进行整数除法并将结果分配给浮点变量。由于整数除法截断(抛弃小数结果),50/100
产生0
。 100可以被50整除,这就是你获得2.000000
结果的原因。使用75
和100
来尝试您的计划,您会看到工作的内容多于该部门的指导方向。
答案 2 :(得分:2)
它将你的数字视为整数,执行除法,然后将结果放入浮点数。
尝试此选项2 = 50.0f / 100;