objective-c 除法总是返回 0

标签 objective-c operations divide

有些奇怪的事情正在发生。

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/

相关文章:

ios - 不能在 swift 中划分两个 NSNumbers?

objective-c - 检查一个 NSArray 的内容是否都在另一个数组中

objective-c - 如何在特定标签栏上打开应用程序? iOS Objective-C

ios - 如何在 NSURLConnection 委托(delegate)完成后更新 UIImages

algorithm - 计算/计算for循环内for循环的原始操作

java - 在java中点后得到7位数字

ios - 有什么方法可以经常使用 3G/4G/LTE 从后台上传位置?

bash - 生成巨大的数字列表

c - AVR 循环中的位比较

vba - VB - 除整数不包括逗号?