Objective c 目标C的浮动和分割
嗨,我很怀疑用浮点数来划分, 测试代码如下:Objective c 目标C的浮动和分割,objective-c,Objective C,嗨,我很怀疑用浮点数来划分, 测试代码如下: - (void)chuza { float option1 = 0; float option2 = 0; option1 = 100/50; option2 = 50/100; NSLog(@"option1 :: %f",option1); NSLog(@"option2 :: %f",option2); } 所以, 我得到: 所以我的问题是: 为什么浮子会像什么时候 分母>分子 但是我
- (void)chuza
{
float option1 = 0;
float option2 = 0;
option1 = 100/50;
option2 = 50/100;
NSLog(@"option1 :: %f",option1);
NSLog(@"option2 :: %f",option2);
}
所以,
我得到:
所以我的问题是:
为什么浮子会像什么时候
分母>分子
但是我不喜欢
分子>分母
谢谢 它将数字视为整数,执行除法,然后将结果放入浮点
尝试此选项2=50.0f/100 无论是
100
还是50
都不是浮点数,它们都是整数。这意味着您正在进行整数除法,并将结果赋给浮点变量。由于整数除法截断(丢弃分数结果),50/100
产生0
。100可以被50整除,这就是为什么会得到2.000000
结果。用75
和100
试试你的程序,你会发现除了除法的方向外,还有更多的工作要做。这对我来说很像,因为你在除法两个整数。当除法两个整数时(在大多数编程语言中,如果不是所有编程语言的话),会忽略除法的剩余部分
想想这条线是如何被评估的。首先计算整数除法,然后将整数结果转换为浮点,以存储在浮点变量中
请注意,整数根本不存储任何小数,因此即使0.999作为整数也将是0。这不是四舍五入的问题
也不是分母比分子大。尝试除以100/30,结果将是3,而不是3.33333。。就像浮动分割一样
您可以通过将数字强制转换为浮点数或确保它们是浮点数来解决此问题
铸造
分割浮动
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
option2 = ((float)50/(float)100);
option2 = 50.0f/100.0f;