当前位置:  开发笔记 > 编程语言 > 正文

在C#中将double格式化为字符串

如何解决《在C#中将double格式化为字符串》经验,为你挑选了1个好方法。

我有一个Double,其值可以从0.000001到1,000,000,000.000左右

我希望将此数字格式化为字符串,但有条件地取决于其大小.所以,如果它非常小,我想用以下内容格式化它:

String.Format("{0:.000000000}", number);

如果它不是那么小,比如0.001,那么我想用类似的东西

String.Format("{0:.00000}", number);

如果结束了,比如1000,那么将其格式化为:

String.Format("{0:.0}", number);

有没有一种聪明的方法来根据我要格式化的值的大小来构造这个格式字符串?



1> tvanfosson..:

使用double的绝对值的Math.Log10来计算出你需要多少0的小数位左边(如果是正数)或右边(如果是负数).根据此值选择格式字符串.您需要单独处理零值.

string s;
double epislon = 0.0000001; // or however near zero you want to consider as zero
if (Math.Abs(value) < epislon) {
    int digits = Math.Log10( Math.Abs( value ));
    // if (digits >= 0) ++digits; // if you care about the exact number
    if (digits < -5) {
       s = string.Format( "{0:0.000000000}", value );
    }
    else if (digits < 0) {
       s = string.Format( "{0:0.00000})", value );
    }
    else {
       s = string.Format( "{0:#,###,###,##0.000}", value );
    }
}
else {
    s = "0";
}

或者根据位数动态构建它.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有