![](/img/trans.png)
[英]Exporting from C# to Excel with numbers that use a comma as a decimal point?
[英]Defining decimal numbers on different operation system, how to understand if point or comma is used by C#
我写了一个小程序,该程序在不同的操作系统(xp,win7)上以不同的方式工作。问题是程序读取了一些浮点数,例如2686。
一个操作系统(win7)将其转换为float true,但在xp上却出错并打印为2686。我如何理解操作系统将哪个符号用于十进制数字?
谢谢。
string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
这不取决于操作系统,而是取决于每台PC上的(默认)语言设置。
如果使用: double value = double.Parse(text);
您使用的是用户配置的区域性。 如果您知道输入采用某种格式,请使用:
var ci = CultureInfo.GetCulture("nl-NL"); // dutch
double value = double.Parse(text, ci);
每个转换的函数都有(1个或更多)重载,以采用FormattingProvider(文化)。
使用用户当前区域性和double.Parse(string,System.Globalization.CultureInfo.CurrentCulture)解析浮点数;
小数点分隔符由当前区域性决定。
如果要使用特定字符作为小数点分隔符,则可以使用任意分隔符创建一个自定义NumberFormatInfo
对象。 如果要使用句点作为分隔符号,则可以简单地使用InvariantCulture
:
double n = Double.Parse(s, CultureInfo.InvariantCulture);
如果要使用逗号,则可以选择一种具有这种文化的语言,例如瑞典语:
double n = Double.Parse(s, CultureInfo.GetCultureInfo("sv-SE"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.