【问题标题】:Generating float based on int基于int生成float
【发布时间】:2015-03-28 10:19:48
【问题描述】:

我正在制作一个板球游戏,所以如果您对板球有一点了解,您将很容易理解这个问题。
我陷入了一个我无法弄清楚的逻辑。这是关于总次数。 (1 次以上意味着玩家将投 6 个球,同样的 2 次以上意味着 12 个球,依此类推)。

如果结束是 1,我已经能够得到,剩下的球是 6。为了显示完成了多少次,我必须以一种形式显示它:
0.41.3类似地,当数字达到0.6 时,它将等于1

所以我有 int 中的信息,并希望将其显示为 float。关于如何实现这一点的任何合乎逻辑的建议。

【问题讨论】:

  • 使用double 比使用float 更好。看来float 来自于内存太小的年代。
  • @samgak 下面的 samgak 已经给出了正确的答案,但float 足以代表多达 500000 次翻滚以及每次翻滚的球数。我对板球一无所知,但我认为这对于大多数板球赛事来说已经足够了。

标签: objective-c ios8 floating-point int


【解决方案1】:

根本不要使用浮点数,因为可能会出现浮点错误。要存储离散量,请使用 int。将球的总数存储为一个整数,当你想显示它时,除以 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多