Objective c 基于int的浮点生成

Objective c 基于int的浮点生成,objective-c,ios8,floating-point,int,Objective C,Ios8,Floating Point,Int,我正在做一个板球游戏,如果你对板球有一点了解,你会很容易理解这个问题。 我陷入了一种我无法理解的逻辑。这是关于超过的总数。(1个超球意味着球员将投出6个球,同样的2个超球意味着12个球,依此类推)。如果超球是1我就能够得到剩下的球是6。要显示完成了多少个over,我必须以一种形式显示:0.4完全不要使用浮点,因为可能会出现浮点错误。要存储离散量,请使用整数。将球的总数存储为整数,当您要显示它时,除以6得到余数,并取模6得到余数(余数是哪个球)。如果你想把你的球从1开始,而不是从0开始,那么就加1

我正在做一个板球游戏,如果你对板球有一点了解,你会很容易理解这个问题。

我陷入了一种我无法理解的逻辑。这是关于超过的总数。(1个超球意味着球员将投出6个球,同样的2个超球意味着12个球,依此类推)。


如果超球是
1
我就能够得到剩下的球是
6
。要显示完成了多少个over,我必须以一种形式显示:
0.4
完全不要使用浮点,因为可能会出现浮点错误。要存储离散量,请使用整数。将球的总数存储为整数,当您要显示它时,除以6得到余数,并取模6得到余数(余数是哪个球)。如果你想把你的球从1开始,而不是从0开始,那么就加1

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太小。@samgak下面samgak给出了正确的答案,但是
float
足以代表多达500000次的溢出以及每个溢出的球数。我对板球一无所知,但我认为这对大多数板球比赛来说可能已经足够了。