double.Parse显然不适用于某个国家

时间:2014-04-13 08:28:05

标签: c# math rounding

基本上,我有这个非常简单的计算:

int bTaxPrice = int.Parse(prices[wep]);
double t = double.Parse("1." + taxes);
double price = Math.Round(t * bTaxPrice);

我将举例说明计算应该如何运作,让我们说t=1.1bTaxPrice=1279,然后1.1*1279 = 1406.9,但是因为我将结果四舍五入价格等于1407。

对于使用我的C#Winforms程序的其他国家/地区(丹麦)的某些用户遇到的问题导致该数字不会舍入,而是添加小数点后的最后2位数。

我们上面计算的结果是1407,对于他们来说是140690.

我在互联网上看过它,有些国家的小数点也有一些特别之处。

对于这类问题有什么好处?

2 个答案:

答案 0 :(得分:4)

实际上,许多国家/地区都使用逗号作为小数点分隔符。 如果要将点用作分隔符,请使用不变CultureInfo

double.Parse("1." + taxes, CultureInfo.InvariantCulture);

答案 1 :(得分:2)

某些国家/地区使用逗号作为小数点分隔符。您可以通过向CultureInfo.InvariantCulture方法提供double.Parse来解决此问题。