【发布时间】:2012-01-08 01:29:31
【问题描述】:
如何计算两个floats 相除的余数?
【问题讨论】:
标签: objective-c
如何计算两个floats 相除的余数?
【问题讨论】:
标签: objective-c
a-floor(a/b)*b 怎么样 - 假设 a 和 b 都是正面的?
您可以说“余数”不是浮点除法的正确概念,但我会让您自己判断。
【讨论】:
99.6 和0.2,我不断获得0.2 的值——当然它应该是0,就像996%2 是0一样。
使用fmod,计算浮点模数。
double remainder = fmod(a_double, another_double);
如果您想使用float 代替double,您可以使用fmodf。
【讨论】:
fmod( 97.2, 0.2 ) 返回0.2,这不是很有用。
97.200000000000002 和0.20000000000000001 作为参数,结果是0.19999999999999746。您可能需要一个定点数学库来解决您的案例。
if( remainder==0 || remainder==another_double) 也失败了,因为0.19999999999999746 不等于0.2。我将比较数字之间的差异。
(-1)%4 例如是 3,但在 Obj-C 中你会得到否定的答案。 fmod() 也会发生这种情况。太可惜了。