2015-01-27 81 views
0

这里是我的代码:Fmodf返回相同的数值

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; 

其中值等于在0-sqsize^2的编号。

任何想法,为什么我保持相同的价值?谢谢。

+0

为什么会有mpi标签? – 2015-01-27 16:00:56

+0

为什么你使用float而不是double? – gnasher729 2015-01-27 17:59:18

回答

0

Try(float)(1.0/sqsize)---您正在使用的(float)类型转换在此刻计算1/sqsize之前不会执行任何操作。意味着它可能会一直评估为0。