如何在保留所有小数位的同时强制数字有3位数?

时间:2016-05-24 23:22:23

标签: c#

在c#中,我希望在数字低于100的情况下从double转换为字符串时强制为0,唯一的挑战是我想保留所有小数位。实例

  

58.3434454545 = 058.3434454545

     

8.343 = 008.343

我尝试使用ToString +格式提供商,但我不确定保留所有小数位的正确提供商

2 个答案:

答案 0 :(得分:4)

您可以使用.ToString()的格式化程序字符串,记录here

要做你想做的事情你可以用它作为例子,注意double的最大数字是17:

double numberA = 58.3434454545;
numberA.ToString("000.##############"); //058.3434454545

double numberB = 8.343;
numberB.ToString("000.##############"); //008.343

答案 1 :(得分:0)

这是一个相当麻烦的解决方案,但是如果你希望小数位数是动态的,你可以尝试这样的事情:

private string FormatDouble(double dbl)
{
    int count = BitConverter.GetBytes(decimal.GetBits((decimal)dbl)[3])[2];
    var fmt = string.Concat("000.", new string('#', count));
    return dbl.ToString(fmt);
}

这样称呼:

Console.WriteLine(FormatDouble(58.3434454545123123));
Console.WriteLine(FormatDouble(8.3431312323));

你的输出就是这样:

  

058.3434454545123

     

008.3431312323

我确信有更好的方法可以做到这一点,我不确定性能,但是嘿它有效,你不必猜测你需要的小数位数,所以这是一个加号