我需要在decimal类型的变量中显示一些数字。
我希望尽可能地显示它们,ToString("G29")
给了我。
但是,我想添加一个千位分隔符。 ToString("N")
给了我数千个分隔符,但完全失去了" G29善良"。
是否有一个简单的解决方案来获取我想要的显示字符串?
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问题/答案让我意识到" G29"以科学计数形式返回小于0.0001的值。因此,当我写这个问题时,我不知道解决方案需要处理这样的特殊情况:
value What I Want ============ ============= 0.00001 0.00001 12345.000067 12,345.000067
答案 0 :(得分:2)
你可能需要做一些工作。 怎么样?
decimal d = 34561.2223400M;
string decimalPart = (d - (int)d).ToString("G29");
string integerPart = d.ToString("##,###");
string finalNumber = integerPart + decimalPart.Substring(1,decimalPart.Length-1);;
答案 1 :(得分:1)
你必须格式化字符串。
尝试:
string yourString = String.Format("{0:N29}", yourWeight);
修改强>
以上情况非常接近。这给出了完全理想的结果:
string yourString = String.Format("{0:N29}", yourWeight).Trim(new [] { '0', '.' });
答案 2 :(得分:1)
有一个非常简单的解决方案,虽然它涉及一个相当长的格式字符串。
decimal d = 12345.000067m;
string s = d.ToString("#,###0.############################"); // 28 #'s after the decimal