2015-01-27 2 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? –

+0

Почему вы используете float, а не double? – gnasher729

ответ

0

Try (float) (1.0/sqsize) --- используемая вами (float) броска, которую вы используете, ничего не делает, пока 1/sqsize не будет вычисляться в данный момент. Это значит, что он, вероятно, будет оценивать до 0 все время.