在c#中,我希望在数字低于100的情况下从double转换为字符串时强制为0,唯一的挑战是我想保留所有小数位。实例
58.3434454545 = 058.3434454545
8.343 = 008.343
我尝试使用ToString
+格式提供商,但我不确定保留所有小数位的正确提供商
答案 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
我确信有更好的方法可以做到这一点,我不确定性能,但是嘿它有效,你不必猜测你需要的小数位数,所以这是一个加号