繁体   English   中英

在不同的操作系统上定义小数,如何理解C#是否使用点或逗号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM