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

Cap*_*mic 52 .net c# string double decimal

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

'XXXXXXX(点)DDDDD'

问题CultureInfo.InvariantCulture在于将','分开成千上万.

UPDATE

这适用于decimal和double类型.


我之前的问题:需要将double或decimal转换为字符串

Guf*_*ffa 105

对于a decimal,使用ToString方法,并指定Invariant culture以获取句点作为小数分隔符:

value.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

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

value.ToString() + ".00"
Run Code Online (Sandbox Code Playgroud)

  • @Captain Comic:当您使用格式“N2”时,您会得到千位分隔符,但不会使用自定义格式“0.00”。自定义格式“0.00”表示“小数分隔符之前的一位或多位数字、与区域性相关的小数分隔符以及小数分隔符之后的两位数字”。通过指定不变区域性,使用小数点分隔符,即句点。 (2认同)

小智 36

指定自己的小数分隔符真的很容易.我花了大约2个小时来搞清楚:D.你看到你正在使用你指定的当前其他文化吗?好吧,解析器唯一需要的是IFormatProvider.如果你把它 CultureInfo.CurrentCulture.NumberFormat作为格式化程序,它将根据你当前的文化格式化双重格式NumberDecimalSeparator.我所做的只是创建一个NumberFormatInfo类的新实例,并将其NumberDecimalSeparator属性设置为我想要的任何分隔符字符串.完整代码如下:

double value = 2.3d;
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "-";
string x = value.ToString(nfi);
Run Code Online (Sandbox Code Playgroud)

结果?"2-3"


Mah*_*ahi 11

您可以使用

value.ToString(CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

在不输入精度的情况下获得精确的双精度值。