【问题标题】:Calculations between integers [duplicate]整数之间的计算[重复]
【发布时间】:2015-03-04 17:27:43
【问题描述】:

我正在尝试计算两个整数之间的比率,喜欢和不喜欢。它似乎返回 0 而不是我应该在我的计算器中得到的数字。我做错了什么?

int likes = 200;
int dislikes = 100;
float ratio = (likes / 2000) * ((likes / likes) + dislikes) * 100;

【问题讨论】:

  • 你被整数除法搞砸了。基本编程概念;去谷歌上查询。你需要在你的作业右边投一些东西给(float)。例如。 ((float)likes / 2000.0f) * ...
  • 你在做整数除法,让 2000 2000.0
  • 另外,并非特定于 Objective-C。这是 C 的一个特性。
  • 所以我应该让所有东西都变成浮动的吗?

标签: objective-c math integer


【解决方案1】:

改变:

int likes = 200;
int dislikes = 100;
float ratio = (likes / 2000) * ((likes / likes) + dislikes) * 100;

到:

float likes = 200;
float dislikes = 100;
float ratio = (likes / 2000) * ((likes / likes) + dislikes) * 100;

或在像这样进行除法之前将其强制转换

int likes = 200;
int dislikes = 100;
float ratio = ((float)likes / 2000) * (((float)likes / likes) + dislikes) * 100;

更新:修正了 cmets 中指出的错字

【讨论】:

  • 演员表应该是(float)likes,而不是float(likes)
  • 哎呀,你是对的,打字快而不思考,我会修复
【解决方案2】:

整数不能表示分数,这就是使它们成为整数的原因。用整数进行除法会丢弃余数,因此,如果您尝试将较小的整数除以较大的整数,则会得到 0。尝试将它们转换为浮点数是正确的,但是您当前的实现在进行转换之前的整数值。在进行计算之前,您需要将 likesdislikes 转换为 float 值。

【讨论】:

    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2011-10-29
    • 2019-02-10
    相关资源
    最近更新 更多