我的书中有一个听起来很简单的 winform 任务。使用windows窗体。在文本框中获取最新的货币汇率。
1 USD = ??? INR
我认为显示转换货币的最佳解决方案是使用带有查询字符串的 Process 方法......
http://www.xe.com/ucc/convert.cgi?Amount=" + costTextBox.Text.ToString() + "&From=USD&To=INR"
但是如何获取并将值分离到文本框中呢?
看看Google Finance API,看看下面的函数:
public static decimal Convert(decimal amount, string from, string to)
{
WebClient web = new WebClient();
string url = string.Format("http://www.google.com/ig/calculator?hl=en&q={0}{1}=?{2}", amount, from.ToUpper(), to.ToUpper());
string response = web.DownloadString(url);
Regex regex = new Regex("rhs: \\\"(\\d*.\\d*)");
Match match = regex.Match(response);
return System.Convert.ToDecimal(match.Groups[1].Value);
}
然后您可以通过这种方式使用该功能:
decimal converted = Convert(3.25, "USD", "EUR");
您可以使用Yahoo 货币转换器执行此操作:
此方法将为您提供当前费率:
decimal getCurrencyRate(string currFrom, string currTo)
{
decimal result;
using (WebClient c = new WebClient())
{
string data = c.DownloadString(string.Format("http://download.finance.yahoo.com/d/quotes.csv?s={0}{1}=X&f=sl1d1t1ba&e=.csv", currFrom, currTo));
string rate = data.Split(',')[1];
var style = NumberStyles.Number;
var culture = CultureInfo.CreateSpecificCulture("en-US");
decimal.TryParse(rate, style, culture, out result);
}
return result;
}
你用这种方式:
//convert $50 to INR
decimal val = 50.0M;
//get rate
decimal rate = getCurrencyRate("USD", "INR");
//calculate value in INR
decimal inrVal = val * rate;