我正在使用visual studio 2010,windows form。
我有这个代码,允许将货币从美元兑换成欧元。这是参考:http://www.codeproject.com/Articles/17909/Simple-Class-to-get-Currency-Exchange-Rates
这是代码:
CurrencyConverter2 cc = new CurrencyConverter2();
cc.AdjustToLocalTime = true;
CurrencyData cd = new CurrencyData("USD", "EUR");
// Convert US Dollars to Euros
cc.GetCurrencyData(ref cd);
label5.Text = (5000 / cd.Rate).ToString();
此案例的输出为:3753,75375375375
但是如果我以这种方式从texbox中放置值(例子5000):
double cambiamo = double.Parse(tbxDaConvertire.Text);
tbxConvertito.Text = (cambiamo * cd.Rate).ToString();
输出为:3752,5
我不明白,因为我得到了这个价值! 我该怎么解决呢?
答案 0 :(得分:3)
正如评论所指出的那样:
double cdRate = 1.42f;
var value1 = (5000 / cdRate).ToString();
var value2 = (double.Parse("5000") / cdRate).ToString();
var value3 = (5000.0f / cdRate).ToString();
// value1 = "3521.12686697913"
// value2 = "3521.12686697913"
// value3 = "3521.12686697913"
您的CD率最有可能不同。在第一个示例中,您可以使用5000 / cd.Rate
,然后在第二个示例中使用5000 * cd.Rate
- 您有时会执行cd.Rate = 1/cd.Rate
吗?这可能是出现差异的地方。
答案 1 :(得分:1)
您的第一次转化使用的转化率为0.75075
您的第二次转化使用的转化率为0.75050
只有0.00025差异,很容易找回过去一周转换率的图表:
注意极端波动率,费率在分钟中变化。换句话说,它在您编辑代码时发生了变化。显然,您正在通过货币转换服务获取实时更新。