有些奇怪的事情正在发生。
float p1 = (6 / 100);
NSLog(@"p1 = %f", p1);
通过这两行代码,我得到了以下输出:
p1 = 0.000000
为什么带有静态数字的简单设备不起作用!我有很多工作要做来处理 divide 不起作用!他妈的,我疯了吗?
最佳答案
那些常量是整数,所以数学是用整数数学完成的。尝试
float p1 = (6.0 / 100.0);
编辑 — @Stephen Canon 明智地指出,因为“p1”是 float
, 没有理由不把整个计算做成 float
:
float p1 = (6.0f / 100.0f);
现在,因为这些东西都是常量,所以我认为编译器很有可能完成这些工作。这也是事实,因为在某些现代机器(即 Intel 架构)上,浮点处理器指令集非常奇怪,以至于一些看起来很明显的“优化”可能会或可能不会那样工作。最后,我想可能是用 float
进行操作的情况。常量可能(在某些情况下)给出与使用 double
进行操作不同的结果。值,然后转换为 float
,如果为真,这可能是决定一种方式或另一种方式的最佳论据。
关于objective-c 除法总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702536/