我刚开始编程并编写了一个需要精确到两位小数的货币转换器程序(使用 double )但是我不喜欢尾随零但用户仍然应该能够输入小数并设置精度四舍五入到一个整体整数
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
const double DOLLAR = 0.05917;
const double EUROS = 0.05681;
int main()
{
double rand;
double equivD;
double equivE;
cout << setprecision(2)<<fixed;
cout << " Enter Rand amount: ";
cin >> rand;
cout << rand << " Rand(s)= ";
equivD= (rand*DOLLAR);
cout << equivD<< " Dollar(s)\n ";
cout << rand << " Rand(s)= ";
equivE= (rand*EUROS);
cout << equivE<< " Euro(s)\n ";
return 0;
}
如果输入的值为 1000,则输出为:
1000.00= 57.24 Dollars
1000.00= answer
如果输入的整数没有小数点,我想删除 .00
但仍将其保留为 double
以防输入小数点。我该怎么做?
最佳答案
不要对金钱使用 float :您会在第 15 位有效数字上偏离;当您花费两位数的美分时,它并不是特别大。
在您的情况下,使用 64 位整数类型并以分为单位工作,当您想要显示计算值时调整您的格式。 (使用外汇汇率时不要忘记正确舍入)。
关于C++货币转换器尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35485183/