C++货币转换器尾随零

标签 c++

我刚开始编程并编写了一个需要精确到两位小数的货币转换器程序(使用 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/

相关文章:

c++ - Doxygen 可以与 Netbeans C++ 集成吗?

C++ 输出错误

c++ - 根据虚拟方法的存在,有条件地将 mixin 应用于接口(interface)

c++ - 静态函数中的非静态参数

c++ - 从不同的文件cmake调用一个类

c++ - 编译时对 std::array 的引用大小不可用

c++ - 计算函数指针的类型

c++ - 使用 foreach 和 lambda 函数将函数应用于 std::map 值

c++ - 需要有关 Vigenere Cipher 程序的帮助

C++ 继承运算符未在派生类中调用