我的程序返回整数值,但即使在显式类型转换之后也应该给出双值

My program returns integer value but should give double value even after explicit type casting?

本文关键字:之后 类型转换 也应该 整数 返回 程序 我的      更新时间:2023-10-16

嘿,伙计们,我一直在学习你们认识的人编写的《使用C++的编程原理和实践》(没有害处,我不会拼写!!),我已经读到了第86页还有一个练习要求我们写一个程序。这是我的版本。这是主.cpp-

int main()
{
    int pennies,nickels,dimes,quarters,half_dollars;
    cout << "Enter the number of pennies,nickels,dimes,quarters<<endl<<"and  half dollars you have pls!!" << endl;
    cin>>pennies>>nickels>>dimes>>quarters>>half_dollars;
    no_of_each(pennies,nickels,dimes,quarters,half_dollars);
    total_money(pennies,nickels,dimes,quarters,half_dollars);
    return 0;
}

这是我制作的money.h头文件-

void total_money(int pennies,int nickels,int dimes,int quarters,int half_dollars)
{
    int total_in_penny;
    double total_in_dollar;
    total_in_penny= (Penny*pennies)+ (Nickel*nickels)+ (Dime*dimes)+ (Quarter*quarters)+ (Halfdollar*half_dollars);
    total_in_dollar=(total_in_penny/100);
    cout<<"The total money in dollars is =$"<<(double)total_in_dollar<<endl
        <<"The total money in pennies is ="<<total_in_penny<<"cents"<<endl;
}

问题是,当我尝试运行它(它成功构建)时,它对total_in_penny显示了良好的结果,但对total_in_dollar却没有。我不知道为什么,因为我甚至在代码中尝试过显式类型转换。如果我错过的代码中有任何问题,请告诉我我已经准备好了。谢谢大家的帮助!!:)

除法的分子或分母必须是double才能得到double结果:

total_in_dollar=(double(total_in_penny)/100);

请不要使用double来表示货币类型。请参阅为什么不使用Double或Float来表示货币?了解更多信息。

相反,试试这个:

int total_cents = 305;
int total_dollars = total_cents/100;
int fractional_dollars = total_cents%100;
std::cout << total_dollars << ".";
std::cout.width(2);
std::cout.fill('0');
std::cout << fractional_dollars << std::endl;

它打印3.05