这是我的代码:
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中的数字。
为什么我一直有同样的价值?感谢。
答案 0 :(得分:0)
尝试(浮动)(1.0 / sqsize)---你正在使用的(浮动)强制转换没有做任何事情,直到此时计算1 / sqsize。这意味着它可能会一直评估为0。