我需要将小数转换为具有N个小数(两个或四个)和NO千位分隔符的字符串:
'XXXXXXX(点)DDDDD'
CultureInfo.InvariantCulture
的问题在于将','分开成千上万。
UPDATE
这适用于decimal和double类型。
对于decimal
,使用ToString方法,并指定Invariant culture以获取句点作为小数分隔符:
value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)
long
类型是一个整数,因此没有分数部分。您可以将其格式化为字符串,然后添加一些零:
value.ToString() + ".00"
指定自己的小数分隔符真的很容易。我花了大约2个小时来搞清楚:D。你看到你正在使用你指定的当前其他文化吗?好吧,解析器唯一需要的是IFormatProvider。如果您将CultureInfo.CurrentCulture.NumberFormat
作为格式化程序,它将根据您当前的文化NumberDecimalSeparator
格式化双倍。我所做的只是创建一个NumberFormatInfo
类的新实例,并将它的NumberDecimalSeparator
属性设置为我想要的任何分隔符字符串。完整代码如下:
double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);
结果? “2-3”
我更喜欢使用ToString()
和IFormatProvider
。
double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));
产量:10,000.30
你可以简单地使用decimal.ToString()
小数点后两位
myDecimal.ToString("0.00");
四位小数
myDecimal.ToString("0.0000");
这给出了点作为小数分隔符,并且无论文化如何都没有千位分隔符。
我想你可以用过:
value.ToString("F"+NumberOfDecimals)
value = 10,502
value.ToString("F2") //10,50
value = 10,5
value.ToString("F2") //10,50
以下是Numeric Format Strings的详细说明
double value = 3.14159D;
string v = value.ToString().Replace(",", ".");
Console.WriteLine(v);
产量:3.14159