-1

我使用的是 Visual Studio 2010,Windows 窗体。

我有这个代码,允许将钱从美元兑换成欧元。这是参考: 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

我不明白,因为我得到了这个值!请问我该如何解决?

4

2 回答 2

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吗?这可能就是产生差异的地方。

于 2013-01-18T14:42:20.253 回答
1

您的第一次转化使用了 0.75075 的转化率

您的第二次转化使用了 0.75050 的转化率

仅 0.00025 的差异,很容易在过去一周的转换率图表中找到:

在此处输入图像描述

注意极端波动,以分钟为单位的速率变化。或者换句话说,它在您编辑代码时发生了变化。显然,您正在从您的货币兑换服务中获得实时更新。

于 2013-01-18T14:57:19.253 回答