Я делаю игру в крикет, поэтому, если у вас есть небольшая идея о крикете, вы легко поймете эту проблему.
Я зациклился на логике, которую я не могу понять. Это касается общего количества перегрузок. (1 над игроком будет бросать 6 мячей, то же самое 2 overs означает 12 мячей и т. Д.).
Я был в состоянии получить, если закончился 1
шары слева 6
. И чтобы показать, сколько кадра сделаны, я должен показать его в форме: 0.4
< - (4-й шар 1), или с 1.3
< - (третья Бал 2 над)
аналогично, когда число достигает 0.6
это будет равный 1
Итак, у меня есть информация в int
и вы хотите отобразить ее как float
. Любой логический совет, как я могу достичь этого.Генерация поплавка на основе int
ответ
Не используйте поплавки вообще, потому что вы можете получить ошибки с плавающей запятой. Для хранения дискретного количества используйте 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);
хорошо, я понял. Спасибо вам :) –
Лучше использовать '' double' чем float'. Кажется, что 'float' исходит из старости, когда RAM была слишком маленькой. – i486
@samgak Правильный ответ был дан самгаком ниже, но 'float' достаточно, чтобы представить до 500000 оборотов и количество шаров, оставшихся в каждом. Я ничего не знаю о крикете, но думаю, что этого будет достаточно для большинства крикетных событий. –