我想将小数点更改为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
但我不太喜欢它,因为它很长,而且我的程序中经常需要它。
是否有一个较短的版本设置“小数点”真的作为点而不是逗号,因为我的文化是常见的?
答案 0 :(得分:110)
一些捷径是创建一个NumberFormatInfo类,将其NumberDecimalSeparator属性设置为“。”并在需要时将该类用作ToString()方法的参数。
using System.Globalization;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
value.ToString(nfi);
答案 1 :(得分:34)
创建扩展方法?
Console.WriteLine(value.ToGBString());
// ...
public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}
答案 2 :(得分:17)
也许我误解了你的问题的意图,所以如果我错了就纠正我,但你不能在全球范围内应用文化设置一次,然后不用担心自定义每个写声明吗?
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
答案 3 :(得分:14)
您可以通过更改用于显示数字的区域性来更改小数点分隔符。但请注意,这将改变有关数字的所有其他内容(例如,分组分隔符,分组大小,小数位数)。从您的问题来看,您似乎默认使用逗号作为小数分隔符的文化。
要更改只是小数点分隔符而不更改区域性,您可以修改当前区域性NumberDecimalSeparator
的NumberFormatInfo
属性。
Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
这将修改线程的当前文化。现在所有输出都会被更改,这意味着您只需使用value.ToString()
输出所需的格式,而无需担心每次输出数字时都要更改文化。
(请注意,neutral文化不能更改其小数分隔符。)
答案 4 :(得分:1)
如果你有一个Asp.Net网络应用程序,你也可以在web.config
中设置它,以便在整个网络应用程序中它是相同的
<system.web>
...
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-GB"
uiCulture="en-GB"
enableClientBasedCulture="false"/>
...
</system.web>
答案 5 :(得分:1)
Convert.ToString(value, CultureInfo.InvariantCulture);