我编写了一个小程序,程序在不同的操作系统上运行方式不同(xp,win7)问题是程序会读取一些浮点数,例如2,686。
一个操作系统(win7)将其转换为float true,但在xp上出错并将其打印2686.如何理解操作系统使用哪个十进制数字符号?
感谢。
答案 0 :(得分:5)
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
答案 1 :(得分:2)
这不依赖于操作系统,而是依赖于每台PC上的(默认)语言设置。
如果您使用:double value = double.Parse(text);
,您正在使用用户配置的任何文化。如果您知道输入采用某种格式,请使用:
var ci = CultureInfo.GetCulture("nl-NL"); // dutch
double value = double.Parse(text, ci);
每个转换的函数都有(1个或多个)重载来获取FormattingProvider(Culture)。
答案 2 :(得分:1)
使用double.Parse(string,System.Globalization.CultureInfo.CurrentCulture)用户当前文化解析浮点数;
答案 3 :(得分:1)
小数点分隔符由当前文化决定。
如果要将特定字符用作小数点分隔符,可以使用您喜欢的任何分隔符创建自定义NumberFormatInfo
对象。如果您想使用句点作为deimcal分隔符,只需使用InvariantCulture
:
double n = Double.Parse(s, CultureInfo.InvariantCulture);
如果您想使用逗号,您可以选择具有该逗号的文化,例如瑞典语:
double n = Double.Parse(s, CultureInfo.GetCultureInfo("sv-SE"));