2015-05-30 21 views
2

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

下面的代码:

#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; 
} 
+3

原因是'100y'不是有效数字的开始,而是'100e' - 以科学记数法。 – Angew

+0

请勿对货币使用浮点数。人们对奇币 –

回答

2

当你进入100e10e它工作正常。 100e10是科学计数法中的有效数字。在科学计数法中,100e不是有效的数字。它不被转换为double,并且money被分配为0.变量currency保持不变。这就是为什么你会得到“对不起,货币不支持”的消息。 e属于这种情况下的一个数字,因为它符合科学记数法格式。

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

+0

或者交换货币ID和价值感到有趣,例如, 'e100',无论如何它都是非常流行的符号,例如$ 5,£3 –

+0

当我输入'100e'时,它给了我“对不起,货币不支持”的信息。 它不应该等待我输入'货币'变量的值吗? – Flip