【问题标题】:Trouble in a program to convert between currencies in C++在 C++ 中进行货币转换的程序中的问题
【发布时间】:2015-05-30 22:08:37
【问题描述】:

作为课程的一部分,我用 C++ 编写了一个简单的程序来在货币之间进行转换。它要求输入一个数值,然后是一个字母(y、e 或 p)来表示一种受支持的货币。使用 'y' 或 'p' 时,您可以将数值和字符一起输入或用空格分隔(即:“100y”或“100 y”),它会正常工作。但是,仅对于字母“e”,如果我同时输入两者,它不会被识别为有效输入。有人知道为什么吗?

代码如下:

#include <iostream>

int main()
{
using namespace std;
constexpr double yen_to_dollar = 0.0081;    // number of yens in a dollar
constexpr double euro_to_dollar = 1.09;     // number of euros in a dollar
constexpr double pound_to_dollar = 1.54;    // number of pounds in a dollar

double money = 0;                           // amount of money on target currency
char currency = 0;
cout << "Please enter a quantity followed by a currency (y, e or p): " << endl;
cin >> money >> currency;

if(currency == 'y')
    cout << money << "yen == " << yen_to_dollar*money << "dollars." << endl;
else if(currency == 'e')
    cout << money << "euros == " << money*euro_to_dollar << "dollars." << endl;
else if(currency == 'p')
    cout << money << "pounds == " << money*pound_to_dollar << "dollars." << endl;
else
    cout << "Sorry, currency " << currency << " not supported." << endl;

return 0;
}

【问题讨论】:

  • 原因是100y不是有效数字的开头,而100e是科学计数法的-。
  • 不要使用浮点数作为货币。人们会因为零钱而感到好笑

标签: c++ if-statement comparison


【解决方案1】:

当您输入100e10e 时,它可以正常工作。 100e10 是科学计数法中的有效数字。 100e 不是科学计数法中的有效数字。它不会转换为double 并且money 被赋值为0。变量currency 保持不变。这就是您收到“抱歉,不支持货币”消息的原因。 e 在这种情况下属于一个数字,因为它符合科学记数法格式。

您可以为每种货币分配 4 个字符(例如 _EUR)。它将解决问题并更加用户友好。

【讨论】:

  • 或交换货币ID和价值,例如e100,无论如何它都是非常流行的符号,例如5 美元,3 英镑
  • 当我输入“100e”时,它会给我“抱歉,不支持货币”消息。难道不应该等我为“货币”变量输入一个值吗?
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 2018-11-15
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多