如何在 double.ToString()中更改小数点的符号?

我想在 C # 中将小数点改为另一个字符,我有一个 double变量 value

double value;

当我使用这个命令时:

Console.WriteLine(value.ToString()); // output is 1,25

我知道我能做到:

Console.WriteLine(value.ToString(
CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25

但是我不是很喜欢它,因为它太长了,而且在我的程序中我经常需要它。

是否有一个简短的版本设置“小数点”真的作为点,而不是逗号是在我的文化是通常的?

157179 次浏览

也许我误解了你的问题的意图,所以如果我错了请纠正我,但是你能不能在全球范围内应用一次区域性设置,然后不用担心定制每个写语句?

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

创建扩展方法?

Console.WriteLine(value.ToGBString());


// ...


public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}

您可以通过更改用于显示数字的区域性来更改小数点。但是要注意,这将改变关于数字的一切(例如,分组分隔符,分组大小,小数位数)。从你的问题来看,你似乎默认了一种使用逗号作为小数点的文化。

若要在不更改区域性的情况下更改 只是的小数点,可以修改当前区域性的 NumberFormatInfoNumberDecimalSeparator属性。

Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

这将修改线程的当前区域性。现在所有的输出都将被更改,这意味着您可以只使用 value.ToString()输出所需的格式,而不必担心每次输出数字时会更改区域性。

(请注意,不能更改 中立区域性的小数点。)

如果你有阿斯匹灵。网络应用程序,你也可以把它设置在 web.config中,使它在整个网络应用程序中是一样的

<system.web>
...
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-GB"
uiCulture="en-GB"
enableClientBasedCulture="false"/>
...
</system.web>

一些快捷方式是创建一个 NumberFormatInfo 类,将其 NumberDecimalPartiator 属性设置为“”并在需要时使用该类作为 ToString ()方法的参数。

using System.Globalization;


NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";


value.ToString(nfi);
Convert.ToString(value, CultureInfo.InvariantCulture);