将double转换为具有N个小数的字符串,点作为小数分隔符,并且没有千位分隔符

时间:2010-11-02 10:28:31

标签: c# .net string double decimal

我需要将小数转换为带有N位小数(两位或四位)和一千位分隔符的字符串:

'XXXXXXX(dot)DDDDD'

CultureInfo.InvariantCulture的问题在于将','分隔成千位。

更新

这适用于十进制和双精度类型。


我之前的问题: Need to convert double or decimal to string

7 个答案:

答案 0 :(得分:93)

对于decimal,使用ToString方法,并指定不变文化以获取句点作为小数分隔符:

value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)

long类型是一个整数,因此没有小数部分。您可以将其格式化为字符串,然后添加一些零:

value.ToString() + ".00"

答案 1 :(得分:32)

指定自己的小数点分隔符非常容易。我花了大约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”

答案 2 :(得分:3)

我更喜欢使用ToString()IFormatProvider

double value = 100000.3
Console.WriteLine(value.ToString("0,0.00", new CultureInfo("en-US", false)));

输出 10,000.30

答案 3 :(得分:2)

您可以使用

value.ToString(CultureInfo.InvariantCulture)

在没有精度的情况下获得精确的双精度值。

答案 4 :(得分:-3)

您只需使用decimal.ToString()

即可

两位小数

myDecimal.ToString("0.00");

四位小数

myDecimal.ToString("0.0000");

这使得点作为小数点分隔符,并且无论文化如何都没有千位分隔符。

答案 5 :(得分:-3)

我认为您可以使用:
value.ToString("F"+NumberOfDecimals)

value = 10,502
value.ToString("F2") //10,50
value = 10,5 
value.ToString("F2") //10,50

以下是Numeric Format Strings

的详细说明

答案 6 :(得分:-4)

double value = 3.14159D;
string v = value.ToString().Replace(",", ".");
Console.WriteLine(v);

输出:3.14159