C# - 强制使用小数点而不是逗号进行格式化字符串

6
基本上我发现我的应用程序使用逗号而不是小数点,我绝不能容忍这种情况。 有人知道我该如何进行更正吗? 我无法通过Google找到一个强制小数点的方法,而所有的结果都是关于强制逗号。
         return String.Format("{0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f", M.M11, M.M12, M.M13, M.M14, M.M21, M.M22, M.M23, M.M24, M.M31, M.M32, M.M33, M.M34, M.OffsetX, M.OffsetY, M.OffsetZ, M.M44);

你能给我们一个例子,说明在什么情况下应该使用逗号,而不是小数点吗? - Abe Miessler
如果有人在英国启动我的应用程序,1.5654654 将会变成 1,5654654。 - Geesu
1
如果你不允许这样做,会让你的英国用户非常困惑。你确定这样做没问题吗? - Abe Miessler
2个回答

9
您可以使用另一个重载方法:
return String.Format(
    CultureInfo.InvariantCulture // <<== That's the magic
,   "{0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f"
,   M.M11, M.M12, M.M13, M.M14, M.M21, M.M22, M.M23, M.M24, M.M31, M.M32, M.M33, M.M34, M.OffsetX, M.OffsetY, M.OffsetZ, M.M44
);

这种调用方式确保不变文化被作为格式提供程序传递给String.Format,确保您可以获得数字点、货币符号美元、英语月份和日期名称等内容。


1
尝试将区域设置为美式英语以供String.Format函数使用:
String.Format(new CultureInfo("en-US"), "{0}f, {1}f, {2}f", etc)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接