我是C#的新手,目前遇到以下问题。在C#中,我有一个Pi浮点数,我想使用ToString()
方法将其转换为字符串。但是该转换给出了一个带有逗号"的字符串结果;31415";。在另一台机器上,它给出了带有点"0"的字符串结果;3.1415";。出现这种情况的原因是什么?我应该怎么做才能得到虚线字符串的结果?
EDIT:问题是,我不能更改代码,但我可以安装和卸载.Net框架,更改操作系统设置等。
编辑:如果不能更改代码。将系统的语言/本地化更改为使用点作为小数分隔符的语言/本土化。在"控制面板"或"设置"中。
您应该在System.Globalization
命名空间中查看国际化和本地化。
这里的建议是使用一个CultureInfo专用于解析数字或将数字写入字符串。
var flt = 232.23f;
var str = flt.ToString(CultureInfo.InvariantCulture); //for example, you can use CultureInfo.CurrentCulture
这允许您在不更改ThreadCulture的情况下保留它。
但看看这个链接https://learn.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo?view=net-5.0.慢慢来,很密集。
我只想在程序的入口点设置当前区域性。
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
但是,我也会检查出现逗号分隔符的机器上的区域设置等。
它与当前的区域性信息有关。您可以将ToString方法中的区域性信息指定为参数,如;
var convertedFloat = floatVariable.ToString(new CultureInfo("en-GB"));
感谢GSerg对Windows区域设置的评论。这解决了我的问题。在"Windows控制"面板中,输入"区域和语言"。在"格式"选项卡中单击"其他设置",然后在"小数符号"字段中指定将浮点数字转换为字符串时必须使用的小数分隔符。