如何在double.ToString()中更改小数点的符号?
我想将小数点改为C#中的另一个字符。我有一个double
可变value
如何在double.ToString()中更改小数点的符号?
double value;
,当我使用命令:
Console.WriteLine(value.ToString()); // output is 1,25
我知道我能做到这一点:
Console.WriteLine(value.ToString(
CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25
,但我不很喜欢因为它很长,我经常在我的程序中需要它。
是否有一个较短的版本设置“小数点”真的是点,而不是逗号,因为在我的文化是平常的?
一些快捷方式是创建一个的NumberFormatInfo类,它的NumberDecimalSeparator属性设置为“”并在需要时使用类作为ToString()方法的参数。
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
value.ToString(nfi);
也许我误解了你的问题的意图,所以纠正我,如果我错了,但你不能在全球范围内应用文化设置一次,然后不担心定制每个写入声明?
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
那么,我不需要它在整个程序中我需要它来适应预期小数点的WPF中的PathGeometry的格式。但事实证明,这个解决方案不会伤害其他任何东西。谢谢! – 2010-06-28 19:49:09
@womp更好的答案!这是否也适用于子线程,如果我将它设置到我的主线程?我想将这个设置应用于我的程序集的整个执行时间。 – Bitterblue 2013-03-14 09:54:47
创建扩展方法?
Console.WriteLine(value.ToGBString());
// ...
public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}
也许有人低估了,因为尽管它像魅力一样工作,但它可以通过在全球范围内设置cultureinfo以更漂亮的方式完成。顺便说一句。我不是downvoter。:) – 2015-09-21 07:03:02
@Thomas:事实上,尽管当OP说“我在我的程序中经常需要它”时,我将其解释为“经常但不是每次都是”*。 – LukeH 2015-09-21 09:33:35
您可以通过更改用于显示数字的文化来更改小数点分隔符。但请注意,这会改变数字的其他所有内容(例如分组分隔符,分组大小,小数位数)。从你的问题来看,你似乎默认了一种使用逗号作为小数点分隔符的文化。
要改变只是小数点分隔符不改变文化,你可以修改当前区域性的NumberFormatInfo
的NumberDecimalSeparator
财产。
Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
这将修改线程的当前文化。现在所有的输出都会被修改,这意味着您可以使用value.ToString()
来输出您想要的格式,而不用担心每次输出数字时都会改变文化。
(请注意,neutral文化不能有其小数点改变。)
如果您尝试这样做,则会出现“实例为只读”错误。 – 2015-09-09 08:31:45
@MariusStanescu我认为这只有在他的答案结束时使用adrianbanks提到的一种新的文化时才会发生。 – patrickbadley 2016-02-11 19:28:40
@patrickbadley我刚刚试过这个解决方案,并遇到“只读”错误。在“观察窗口”中添加“Culture.IsNeutralCulture”,表明文化不是中性的。但是,我也注意到它是只读的。 克隆文化似乎是解决这个问题的正确方法。请参阅以下[答案](http://stackoverflow.com/a/3912937/4625305)。 – AXMIM 2016-08-05 14:34:20
如果你有一个Asp.Net Web应用程序,还可以将其设置在web.config
,使其在整个同整个Web应用程序
<system.web>
...
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-GB"
uiCulture="en-GB"
enableClientBasedCulture="false"/>
...
</system.web>
我更喜欢这种方法,因为它的语言是独立的! – 2016-07-05 14:04:45