打印双自定义舍入和千分隔符

时间:2015-02-12 13:36:59

标签: c# formatting double

我需要编写很多数字格式,我希望它们可以轻松阅读但我的用户。我需要:

  • 自定义舍入值(从0到10)
  • 千分离器
  • 减少垃圾
  • 快速处理(更新率:~10hz)

我想出的最好的是这段代码:

private string RoundToString(double d)
{
    return Double.IsNaN(d) ? "Out Of Bounds" : d.ToString("N" + (int)numUpDownRoundValue.Value);
}

但如果舍入很高,我会得到很多无用的0

182,0000000000  370,5000000000          370,5444319880  121,0000000000  517,0000000000  5 949 090,8555680300                        
105,3700000000  158,2750000000          165,4869516069  74,1850000000   245,4200000000  2 656 893,0080484100            
107 277,0000000000  109 452,0000000000          110 879,4795092180  100 261,0000000000  119 221,0000000000  1 780 170 043,5204900000

我也尝试过这个:

private string RoundToString(double d)
{
    return Double.IsNaN(d) ? "Out Of Bounds" : Math.Round(d, (int)numUpDownRoundValue.Value).ToString("N");
}

但是N选项提前到达(精度损失)

修改

我想要的是什么:

182 370,5 -- 370,5444319880 -- 121 517 -- 5 949 090,85556803                    
105,37 -- 158,275 -- 165,4869516069 -- 74,185 -- 245,42 -- 2 656 893,00804841           
107 277 -- 109 452 -- 110 879,479509218 -- 100 261  119 221 -- 1 780 170 043,52049

换句话说,我想要千位分隔符,没有无用的零。

2 个答案:

答案 0 :(得分:1)

如果您希望最多超过十进制的10位数但不想使用训练零:

d.ToString("#,##0."+new string('#',(int)numUpDownRoundValue.Value))

答案 1 :(得分:0)

怎么样:

d.ToString("#,#.##########")

在msdn网站上查找custom numeric format