Mar*_*cka 53 .net c# double tostring
我想将小数点更改为C#中的另一个字符.我有一个double变量value
double value;
Run Code Online (Sandbox Code Playgroud)
当我使用命令时:
Console.WriteLine(value.ToString()); // output is 1,25
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做:
Console.WriteLine(value.ToString(
CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25
Run Code Online (Sandbox Code Playgroud)
但我不太喜欢它,因为它很长,而且在我的程序中经常需要它.
是否有一个较短的版本设置"小数点"真的作为点而不是逗号,因为在我的文化中是常见的?
小智 117
一些捷径是创建一个NumberFormatInfo类,将其NumberDecimalSeparator属性设置为"." 并在需要时使用类作为ToString()方法的参数.
using System.Globalization;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
value.ToString(nfi);
Run Code Online (Sandbox Code Playgroud)
Luk*_*keH 35
创建扩展方法?
Console.WriteLine(value.ToGBString());
// ...
public static class DoubleExtensions
{
public static string ToGBString(this double value)
{
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
}
}
Run Code Online (Sandbox Code Playgroud)
wom*_*omp 18
也许我误解了你的问题的意图,所以如果我错了就纠正我,但你不能在全球范围内应用文化设置一次,然后不用担心自定义每个写声明吗?
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
Run Code Online (Sandbox Code Playgroud)
adr*_*nks 14
您可以通过更改用于显示数字的区域性来更改小数点分隔符.但请注意,这将改变有关数字的所有其他内容(例如,分组分隔符,分组大小,小数位数).从您的问题来看,您似乎默认使用逗号作为小数分隔符的文化.
要仅更改小数点分隔符而不更改区域性,可以修改NumberDecimalSeparator当前区域性的属性NumberFormatInfo.
Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";
Run Code Online (Sandbox Code Playgroud)
这将修改线程的当前文化.现在所有输出都将被更改,这意味着您可以使用value.ToString()输出所需的格式,而无需担心每次输出数字时都要更改文化.
(请注意,中性文化不能更改其小数分隔符.)