Fmodf返回相同的值

时间:2015-01-27 00:39:03

标签: random modulus

这是我的代码:

x = fmodf((float)rand(), (float)(1/sqsize)) + x1;

问题是,只要sqsize是4的平方倍数的倍数(例如4,16,64),它总是返回相同的数字。 sqsize是倍数的平方根(因此4为2,16为4,64为8等)。

x1定义为:

x1 = fmodf(value,sqsize)/sqsize;

其中value等于0-sqsize ^ 2中的数字。

为什么我一直有同样的价值?感谢。

1 个答案:

答案 0 :(得分:0)

尝试(浮动)(1.0 / sqsize)---你正在使用的(浮动)强制转换没有做任何事情,直到此时计算1 / sqsize。这意味着它可能会一直评估为0。