C#:如何显式设置 Double.Parse(string num) 的区域性

发布于 2024-08-30 13:58:38 字数 92 浏览 3 评论 0原文

我下载了一个程序,该程序读取文件,然后将双精度值从字符串解析为双精度值。但我得到一个例外,因为该文件包含带有“.”的数字分隔符,但在我的文化中有“,”。如何明确设置文化?

I download one program that read file and then parse double values from String to Double. But I get an exception because this file contains numbers with '.' separator, but there is ',' in my culture. How can I set culture explicitly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七分※倦醒 2024-09-06 13:58:38

您可以使用接受 IformatProviderParse 重载。

Double.Parse("23.56", new CultureInfo("..."))

如果您不知道用于编写文件的区域性,您可以创建一个 NumberFormatInfo 并根据需要配置它:

var nfi = new NumberFormatInfo();

nfi.NumberDecimalSeparator = ".";

var d = Double.Parse("23.56", nfi);

You would use the Parse overload that accepts an IformatProvider.

Double.Parse("23.56", new CultureInfo("..."))

If you don't know the culture used to write the file you create a NumberFormatInfo and configure it as you like:

var nfi = new NumberFormatInfo();

nfi.NumberDecimalSeparator = ".";

var d = Double.Parse("23.56", nfi);
耀眼的星火 2024-09-06 13:58:38

这是我习惯做的,但我想我将来会使用 NumberFormatInfo !

CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

try
{
   if (Thread.CurrentThread.CurrentCulture != null) 
   {
     double d = Double.Parse("23.5");
   }
}
finally
{
   Thread.CurrentThread.CurrentCulture = oldCulture;
}

this was i'm used to do but i think i will use the NumberFormatInfo in the future !

CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

try
{
   if (Thread.CurrentThread.CurrentCulture != null) 
   {
     double d = Double.Parse("23.5");
   }
}
finally
{
   Thread.CurrentThread.CurrentCulture = oldCulture;
}
孤者何惧 2024-09-06 13:58:38

也可用:

double.Parse((""+s).Replace(",","."), System.Globalization.CultureInfo.InvariantCulture)

丑陋极了,但这就是.Net...:)

Also usable:

double.Parse((""+s).Replace(",","."), System.Globalization.CultureInfo.InvariantCulture)

Ugly as hell, but that's .Net... :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文