CSharp - C# 向小于 1的值添加前导零

  显示原文与译文双语对照的内容

给定十进制值,如何在字符串中添加前导零当一个值小于时,只允许使用?

比如,


.20 ->"0.20" - Add a leading 0



1.20 ->"1.20" - Value remains the same



小数位前的值可以是任意长度,小数位后的值将仅为 2位 IE 。 货币。String.Format() 可以实现这里功能? 或者我应该依赖基本的if语句?

String.Format() 文档对我来说相当混乱。

我已经检查了几个问题/答案,似乎找不到我要找的东西。

编辑:如几个答案所述,这类前导零应该是调用值的ToString() 方法的默认行为。 根据不同原因,在我的情况下不会发生这种情况,因这里 String.Format() 是我的例子。

时间: 原作者:

使用 string.format() 是可能的:


string.Format("{0:0.00}", 0.2)//0.20


string.Format("{0:0.00}", 1.20)//1.20



你还可以对变量本身使用 ToString():


var d1 = 0.2;


var d2 = 1.20;


Console.WriteLine(d1.ToString("0.00"));//0.20


Console.WriteLine(d2.ToString("0.00"));//1.20



原作者:

如果在格式字符串中的点前面使用零,则会得到所需的效果:


string.Format("{0:0.00}", currency);



或者使用 C# 6语法

 
$"{currency:0.00}"



 

注意,.NET 还为格式化货币提供了一种通用格式说明符,它也负责前导零:

 
$"{currency:C}"



 
原作者:

你所要求的实际上是十进制类型的ToString()的默认行为。 你不需要 String.Format()


 decimal d =. 20M;


 string s = d.ToString();



 Console.WriteLine(s);



原作者:

所有其他的答案都是做你想要做的事情的首选方法。 但是这里是使用字符串格式说明符的另一种方法。


var valStrVersion = ((val <1.0M)?"0" + val.ToString() : val.ToString());



然后你就可以用它来做任何事情。 把它转换出来打印出来。 当你声明它时,是否将M 附加到十进制值? decimal dec = 0.15M;

...