格式化类似于 ToString("G29") 的十进制数字加上千位分隔符
Formatting a decimal number similar to ToString("G29") plus a thousands separator
我需要在小数类型的变量中显示一些数字。
我想几乎按原样显示它们,这 ToString("G29")
给了我。
但是,我想添加一个千位分隔符。 ToString("N")
给了我千位分隔符但完全失去了 "G29 goodness".
是否有简单的解决方案来获取我想要的显示字符串?
value "N" "G29" What I Want
============= ========== ========== ==============
296018.413 296,018.41 296018.413 296,018.413
652609 652,609.00 652609 652,609
296.018413 296.02 296.018413 296.018413
326.305 326.31 326.305 326.305
编辑:
另一个 SO question/answer 最近让我意识到 "G29" returns 的值在科学记数法中小于 0.0001。所以当我写这个问题时,我不知道解决方案需要处理像这样的特殊情况:
value What I Want
============ =============
0.00001 0.00001
12345.000067 12,345.000067
您可能需要做一些变通。
这个怎么样?
decimal d = 34561.2223400M;
string decimalPart = (d - (int)d).ToString("G29");
string integerPart = d.ToString("##,###");
string finalNumber = integerPart + decimalPart.Substring(1,decimalPart.Length-1);;
您必须格式化字符串。
尝试:
string yourString = String.Format("{0:N29}", yourWeight);
编辑:
以上非常接近。这给出了预期的结果:
string yourString = String.Format("{0:N29}", yourWeight).Trim(new [] { '0', '.' });
有一个非常简单的解决方案,尽管它涉及相当长的格式字符串。
decimal d = 12345.000067m;
string s = d.ToString("#,###0.############################"); // 28 #'s after the decimal
我需要在小数类型的变量中显示一些数字。
我想几乎按原样显示它们,这 ToString("G29")
给了我。
但是,我想添加一个千位分隔符。 ToString("N")
给了我千位分隔符但完全失去了 "G29 goodness".
是否有简单的解决方案来获取我想要的显示字符串?
value "N" "G29" What I Want ============= ========== ========== ============== 296018.413 296,018.41 296018.413 296,018.413 652609 652,609.00 652609 652,609 296.018413 296.02 296.018413 296.018413 326.305 326.31 326.305 326.305
编辑:
另一个 SO question/answer 最近让我意识到 "G29" returns 的值在科学记数法中小于 0.0001。所以当我写这个问题时,我不知道解决方案需要处理像这样的特殊情况:
value What I Want ============ ============= 0.00001 0.00001 12345.000067 12,345.000067
您可能需要做一些变通。 这个怎么样?
decimal d = 34561.2223400M;
string decimalPart = (d - (int)d).ToString("G29");
string integerPart = d.ToString("##,###");
string finalNumber = integerPart + decimalPart.Substring(1,decimalPart.Length-1);;
您必须格式化字符串。
尝试:
string yourString = String.Format("{0:N29}", yourWeight);
编辑:
以上非常接近。这给出了预期的结果:
string yourString = String.Format("{0:N29}", yourWeight).Trim(new [] { '0', '.' });
有一个非常简单的解决方案,尽管它涉及相当长的格式字符串。
decimal d = 12345.000067m;
string s = d.ToString("#,###0.############################"); // 28 #'s after the decimal