格式未在法国文化中应用

Format not getting applied in French culture

我需要将格式应用于 decimal 类型的数字。假设数字 12345 必须以 ## ##0,0 格式显示。然后,所需的输出是 12 345,0。但不知何故它没有正确应用,我得到的结果是 1 2,345

下面是执行格式化工作的代码。还要检查这个 fiddle 我的问题被重现的地方。

已更新

CultureInfo ci = new CultureInfo("fr-FR");
decimal integral = Convert.ToDecimal("12345");
Console.WriteLine(integral.ToString("## ##0,0"));

我知道有许多格式相关的解决方案已经可用,但无法弄清楚这种方法有什么问题。

你可以使用这个功能:

public static string FormatNumber(this double number)
        {
            return number.ToString("#,##0.00");
        }

然后像这样调用你的函数:

decimal integral = Convert.ToDecimal("12345");
Console.WriteLine(integral.FormatNumber());

您没有使用创建的文化信息来格式化数字。 此外,您的格式说明符不正确。您必须始终使用 POINT 作为格式字符串中的小数点分隔符,然后将其替换为特定于区域性的小数点分隔符(fr-FR 的逗号)。

以下应该可以正常工作:

integral.ToString("## ##0.0", ci)

我在这里提供了答案:

我展示了多种方法,希望对您有所帮助。