C ++ Integer Division给出了非常大的数字

时间:2017-10-22 19:05:31

标签: c++ type-conversion double division

所以我目前正在为我的数据结构课程编写一个作业,让我在最基本的地方让我头疼。我们正在使用Hungtington-Hill方法和优先级队列,当我尝试做我的简单划分以获得"优先级"等于一个州的人口除以几何平均数,我得到了非常大的数字。我的州级中的变量和方法如下所示:

class State{
 private:
    string state;
    int pop;
    int reps;
    double priority;
};
void State::calculatePriority(){
    double temp = (double)reps * ((double)reps + 1.0);
    priority = (double)pop/sqrt(temp);
}

方法calculatePriority()给了我疯狂的输出,它会像这样读到:

州:加利福尼亚州

2010年人口普查人口:37253956

代表:1

优先级:0

并发布calculatePriority()我得到了这个:

州:加利福尼亚州

2010年人口普查人口:37253956

代表:1

优先级:2.63425e + 07

我在这里犯了一个逻辑错误吗?我不确定问题是什么。它可能与sqrt()方法我不确定。我起初认为这是因为(双)演员,所以我把所有的变化都变成了双打,但我遇到了同样的问题。

1 个答案:

答案 0 :(得分:2)

结果不是很大,实际上是2.63425e+07 ≈ 26342524,这是您计算的确切结果:

double temp = (double)reps * ((double)reps + 1.0); // = 2
priority = (double)pop/sqrt(temp); // = (37253956 / 1.41421) = 26342524

您的计划没有任何问题:)