C++ C++;关于分割和分割的问题

C++ C++;关于分割和分割的问题,c++,floating-point,double,cout,C++,Floating Point,Double,Cout,我正在做一项计算机科学的作业。我们必须制定一个打击率平均的计划。我用它来计算安打、出局、单打等等,但要计算平均打击率,就要计算0.000。我不知道为什么,我做了大量的谷歌搜索,尝试将变量设置为double和float,等等。下面是代码: #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; int main(){ const int MAX_TIMES_

我正在做一项计算机科学的作业。我们必须制定一个打击率平均的计划。我用它来计算安打、出局、单打等等,但要计算平均打击率,就要计算0.000。我不知道为什么,我做了大量的谷歌搜索,尝试将变量设置为double和float,等等。下面是代码:

#include <iostream>
#include <iomanip>
#include <cstdlib>

using namespace std;

int main(){
const int MAX_TIMES_AT_BAT = 1000;
int hits = 0, timesBatted = 0, outs = 0, walks = 0, singles = 0, doubles = 0, triples = 0, homeRuns = 0;
float battingAverage = 0.0, sluggingPercentage = 0.0;

for(int i = 0; i < MAX_TIMES_AT_BAT; i++){
    int random = rand() % 100 +1;

    if(random > 0 && random <= 35){ 
        outs++;
    }else if(random > 35 && random <= 51){
        walks++;
    }else if(random > 51 && random <= 71){
        singles++;
        hits++;
    }else if(random > 71 && random <= 86){
        doubles++;
        hits++;
    }else if(random > 86 && random <= 95){
        triples++;
        hits++;
    }else if(random > 95 && random <= 100){
        homeRuns++;
        hits++;
    }else{
        cout << "ERROR WITH TESTING RANDOM!!!";
        return(0);
    }
    timesBatted++;
}
    cout << timesBatted << " " << hits << " " << outs << " " << walks << " " << singles << " " << doubles << " " << triples << " " << homeRuns << endl;


battingAverage = (hits / (timesBatted - walks));
sluggingPercentage = (singles + doubles * 2 + triples * 3 + homeRuns*4) / (timesBatted - walks);

cout << fixed << setprecision(3) << "Batting Average: " << battingAverage << "\nSlugging Percentage: " << sluggingPercentage << endl;


return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
常数int MAX_乘以_BAT=1000;
智力命中率=0,时间击球率=0,出局率=0,步行率=0,单打率=0,双打率=0,三打率=0,本垒打率=0;
浮球击球平均数=0.0,击球百分比=0.0;
对于(int i=0;i如果(random>0&&random 35&&random 51&&random 71&&random 86&&random 95&&random正在执行整数除法。请将至少一个操作数显式强制转换为
double
。例如:

battingAverage = (static_cast<float>(hits) / (timesBatted - walks));
battingAverage=(静态施法(命中)/(时间击球-行走));

sluggingPercentage
的赋值也一样,您正在执行整数除法。请将至少一个操作数显式强制转换为
双精度
。例如:

battingAverage = (static_cast<float>(hits) / (timesBatted - walks));
battingAverage=(静态施法(命中)/(时间击球-行走));

分配给
sluggingPercentage

的任务也是一样的,简单地将
int
除以
int
就是另一个
int
。只需将一个值转换为
双值即可

比如说,

battingAverage = static_cast<double>(hits) / (timesBatted - walks)
sluggingPercentage = static_cast<double>(singles + doubles * 2 + triples * 3 + homeRuns*4) / (timesBatted - walks)
battingAverage=static_cast(命中)/(timebatted-walks)
击球百分比=静态(单打+双打*2+三打*3+本垒打*4)/(时间击球-步行)
总是使用C++的case[<代码> StistaCaseCube()/<代码>而不是C case>代码>(double)(/<)/>代码>,因为编译器将给您更多关于何时出错的提示。


不讨厌C++!(显示一点爱,它会爱你的!

< p>简单的,如<代码> int <代码>由<代码> int <代码> >是另一个<代码> int <代码>。简单地将一个转换为<代码>双 比如说,

battingAverage = static_cast<double>(hits) / (timesBatted - walks)
sluggingPercentage = static_cast<double>(singles + doubles * 2 + triples * 3 + homeRuns*4) / (timesBatted - walks)
battingAverage=static_cast(命中)/(timebatted-walks)
击球百分比=静态(单打+双打*2+三打*3+本垒打*4)/(时间击球-步行)
总是使用C++的case[<代码> StistaCaseCube()/<代码>而不是C case>代码>(double)(/<)/>代码>,因为编译器将给您更多关于何时出错的提示。


不讨厌C++!(显示出一点爱,它会爱你的!< /P>我正在做计算机科学的作业,我们正在学习C++,我讨厌它。”(哈哈)什么是(??)@ WBANON,也许你应该选择一些其他的学习课程,如果你已经讨厌C++。我之所以接受它的唯一原因是因为PREEQ部分:(我只是更喜欢java。越熟悉,就越有趣accustomed@wbAnon你会学会爱上它,尤其是当GC收集器在最不方便的时候不踢的时候,没有一个!“我正在做计算机科学的作业,我们正在学习C++,我讨厌它”(哈哈):如果你已经讨厌C++,你也许应该选择其他的课程。我之所以接受它,是因为PREEQ部分:(我只是更喜欢java。越熟悉,就越有趣accustomed@wbAnon你会爱上它的,尤其是当GC收集器在最不方便的时候没有启动的时候;没有一个!好吧,那真的很好。我从来没有想到过XD。谢谢你的快速回答!!!我会在可能的时候接受这个:D@wbAnon:好的,很高兴能帮上忙我从来没有想到过这个XD。谢谢你的快速回答!!!我会在可能的时候接受这个:D@wbAnon:好的,很高兴它有帮助