我的程序返回整数值,但即使在显式类型转换之后也应该给出双值
My program returns integer value but should give double value even after explicit type casting?
嘿,伙计们,我一直在学习你们认识的人编写的《使用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
。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 为什么在调用隐式类型转换构造函数之后直接是驱动器
- 我的程序返回整数值,但即使在显式类型转换之后也应该给出双值