c#Covert.ToDecimal在3.5和4.5框架以及xp机器中的差异

本文关键字:xp 机器 框架 ToDecimal c#Covert | 更新日期: 2023-09-27 18:20:47

我需要帮助
以下代码在安装了3.5和4.5.NET Framework的Win7/Win8计算机上运行良好。

CultureInfo info = CultureInfo.CreateSpecificCulture("hr-HR");
string ui = txtUkupanIznos.Text.Trim();
decimal pvalue;
if (decimal.TryParse(ui, NumberStyles.Any, info, out pvalue))
{
    decimal poreznaStopa = 0.00m;
    decimal ukupanIznos = 0.00m;
    try
    {
        poreznaStopa = Convert.ToDecimal(txtstopa.Text.Replace(".", ","), info);
        ukupanIznos = Convert.ToDecimal(ui.Replace(".", ","), info);
    }
    ...

但在安装了.NET Framework 3.5 SP1的XP机器上,这会引发FormatException,因此我需要删除Replace(".", ",")

为什么?

c#Covert.ToDecimal在3.5和4.5框架以及xp机器中的差异

我的猜测是,在这些Windows版本之间,为克罗地亚定义的区域设置可能发生了变化。如果您在MSDN中运行示例代码,在三台不同的电脑上输出设置,您会看到数字格式的什么?

区域性很可能不是在Windows Vista之前定义的。我猜人力资源在旧的操作系统中可能没有任何意义。