double.Parse 显然不适用于某些国家/地区

zar*_*rko 2 c# math rounding

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

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

我会给你一个计算应该如何工作的例子,比如说t=1.1bTaxPrice=1279,然后1.1*1279 = 1406.9,但是因为我对结果进行了四舍五入,所以价格等于 1407。

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

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

我在互联网上读到过它,有些国家有一些特别的小数点。

这种问题有什么好的解决方法?

Mar*_*ter 5

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

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