我将一个小数除以一个大数。基本上,它是一个代码,用于显示cpu的使用和浪费。并且它正在计算其利用率。但是当我除以某点而不是某个值时,结果始终为零。 即使我正在使用浮点数,但它不能解决m问题。 我想得到CPU利用率和CPU浪费的答案
#include <conio.h>
#include <iostream>
using namespace std;
main()
{
int totalmonotime=0;
int totalutilization=0;
int totalwastage=0;
int tproc=0;
int dump=0;
double mono_u=0;
double mono_w=0;
cout<<"Enter Number of Process"<<"\n";
cin>>dump;
if(dump>=1)
{
tproc=dump;
}else
cout<<"wrong input"<<"\n";
int u[tproc];
int w[tproc];
for(int i =1;i<=tproc;i++)
{
cout<<"Enter "<<i<<" process's Utiizaton"<<"\n";
cin>>u[i];
cout<<"Enter "<<i<<" process's Wastage"<<"\n";
cin>>w[i];
}
cout<<"Mono Programing"<<"\n";
for(int i=1;i<=tproc;i++)
{
for(int j=1;j<=u[i];j++)
{
cout<<"=";
}
for(int j=1;j<=w[i];j++)
{
cout<<"+";
}
}
cout<<"\n";
int x=0;
cout<<"\n"<<"Multi Programing"<<"\n";
for(int i=1;i<=tproc;i++)
{
for(int j=1;j<=u[i];j++)
{
cout<<"=";
}
for(int j=1;j<=w[i];j++)
{
cout<<"+";
}
cout<<"\n";
for(int k=1;k<=u[i]+x;k++)
{
cout<<" ";
}
x=x+u[i];
}
for(int d=1;d<=tproc;d++)
{
totalwastage=totalwastage+w[d];
totalutilization=totalutilization+u[d];
}
cout<<"\n"<<"total wastage = "<<totalwastage<<"\n";
cout<<"total utilization = "<<totalutilization<<"\n";
totalmonotime=totalwastage+totalutilization;
cout<<"total time for mono programing is "<<totalmonotime<<"\n";
cout<<"total time for multi programing"<<"\n";
mono_u=(totalutilization/totalmonotime)*100;
cout<<"\n"<<"CPU utilization for mono programing ="<<mono_u<<"\n";
mono_w=(totalwastage/totalmonotime)*100;
cout<<"CPU wastage for mono programing ="<<mono_w;
}
`
答案 0 :(得分:4)
您的除法是整数除法:
totalutilization/totalmonotime
...您可以将其更改为float以便以float样式进行划分=> (double)totalutilization/(double)totalmonotime
(确实只需要进行一次强制转换,但这可以使您的意图更加清晰)
还知道,如果将小数乘以1000左右,则可能会得到更精确的答案(尽管相差1000倍)