当我在具有不同小数符号选项的系统上 运行 时,为什么我的数学应用程序会崩溃?

Why I got crash in my math application when I run it on system with different decimal symbol option?

我用很多方法编写了大型数学应用程序。 在使用相同的小数点符号选项将其部署到系统上后,我的应用程序获得了良好的结果。 当我尝试使用其他十进制符号选项在 OS 上部署我的应用程序时,我的应用程序崩溃了。

我阅读了 CultureInfo Class (https://docs.microsoft.com/pl-pl/dotnet/api/system.globalization.cultureinfo?view=netframework-4.7.2)。

这个class可以给我关于OS中的十进制符号格式等的信息

我无法想象重写 OS 的所有方法,使用与编译应用程序的 OS 不同的十进制符号选项。

例如。下行给出了 OS 上的崩溃应用程序,其中包含不同的 小数符号选项 :

double d = Double.Parse(testString);

是否可以不重写所有方法来解决这个问题?

由于您不想在所有地方都更改代码,因此您可以在开始的某处更改默认的 NumberDecimalSeparator。

您需要将“,”替换为您期望默认 NumberDecimalSeparator 的字符

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
if (ci.NumberFormat.NumberDecimalSeparator != ".")
{
    ci.NumberFormat.NumberDecimalSeparator = ".";
    Thread.CurrentThread.CurrentCulture = ci;
}

然后,您的其余代码应该可以正常工作

var str= @"23,6";
var value = decimal.Parse(str);