2015-01-29 3 views
1

Я делаю игру в крикет, поэтому, если у вас есть небольшая идея о крикете, вы легко поймете эту проблему.
Я зациклился на логике, которую я не могу понять. Это касается общего количества перегрузок. (1 над игроком будет бросать 6 мячей, то же самое 2 overs означает 12 мячей и т. Д.).

Я был в состоянии получить, если закончился 1 шары слева 6. И чтобы показать, сколько кадра сделаны, я должен показать его в форме:
0.4 < - (4-й шар 1), или с
1.3 < - (третья Бал 2 над)
аналогично, когда число достигает 0.6 это будет равный 1

Итак, у меня есть информация в int и вы хотите отобразить ее как float. Любой логический совет, как я могу достичь этого.Генерация поплавка на основе int

+0

Лучше использовать '' double' чем float'. Кажется, что 'float' исходит из старости, когда RAM была слишком маленькой. – i486

+0

@samgak Правильный ответ был дан самгаком ниже, но 'float' достаточно, чтобы представить до 500000 оборотов и количество шаров, оставшихся в каждом. Я ничего не знаю о крикете, но думаю, что этого будет достаточно для большинства крикетных событий. –

ответ

3

Не используйте поплавки вообще, потому что вы можете получить ошибки с плавающей запятой. Для хранения дискретного количества используйте int. Храните общее количество шаров в виде int и когда вы хотите его отобразить, разделите на 6, чтобы получить пропуски и взять по модулю 6, чтобы получить остаток (какой мяч над ним). Добавьте 1, если вы хотите, чтобы пронумеровать ваши шары в Овер, начиная с 1 вместо 0.

int balls = 62; // example value 
printf("%d.%d", balls/6, (balls % 6) + 1); 

В случае, если выход 10,3 (третий мяч 11-го по)

Когда шарики равен нулю, что является первым шаром первый над (0.1).

Если вы настаиваете на поплавок, вы можете преобразовать так:

float overs = (float)(balls/6) + ((float)((balls % 6) + 1) * 0.1f); 
+0

хорошо, я понял. Спасибо вам :) –