使用自定义舍入和千位分隔符打印 double
print double with custom rounding and thousand separator
我有很多数字需要格式化,我希望它们易于阅读,但我的用户。我需要:
- 自定义舍入值(从 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
换句话说,我想要千位分隔符并且没有无用的零。
怎么样:
d.ToString("#,#.##########")
在 msdn 站点上查找 custom numeric format。
如果您想要 最多 小数点后 10 位但不想训练零,请使用:
d.ToString("#,##0."+new string('#',(int)numUpDownRoundValue.Value))
我有很多数字需要格式化,我希望它们易于阅读,但我的用户。我需要:
- 自定义舍入值(从 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
换句话说,我想要千位分隔符并且没有无用的零。
怎么样:
d.ToString("#,#.##########")
在 msdn 站点上查找 custom numeric format。
如果您想要 最多 小数点后 10 位但不想训练零,请使用:
d.ToString("#,##0."+new string('#',(int)numUpDownRoundValue.Value))