给定小数值,当值小于1时,如何在字符串中仅添加前导零?
例如
.20 -> "0.20" - Add a leading 0
1.20 -> "1.20" - Value remains the same
小数位前的值可以是任意长度,小数位后的值只能是2位数。货币。这是用String.Format()实现的吗?或者我应该依赖基本的if语句?
String.Format()文档对我来说相当混乱。
我已经检查了其他几个问题/答案,似乎无法找到我正在寻找的东西。
编辑:正如几个答案所提到的,这种前导零加法应该是在值上调用的ToString()方法的默认行为。无论出于何种原因,在我的情况下都没有发生,所以String.Format()在我的情况下是必要的。
答案 0 :(得分:6)
可以使用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
答案 1 :(得分:2)
如果在格式字符串中的点之前使用零,则可以获得所需的效果:
string.Format("{0:0.00}", currency);
或使用C#6语法
$"{currency:0.00}"
请注意,.NET还提供了格式化货币的通用格式说明符,它也处理前导零:
$"{currency:C}"
答案 2 :(得分:2)
您要求的实际上是小数类型的ToString()
的默认行为。你不需要String.Format()
。
decimal d = .20M;
string s = d.ToString();
Console.WriteLine(s);
答案 3 :(得分:1)
所有其他先前的答案将是您尝试的首选方式。但是这里有一个使用字符串格式说明符的替代方法。
var valStrVersion = ((val < 1.0M) ? "0" + val.ToString() : val.ToString());
然后你可以随心所欲地做它。转换回来,打印出来,无论如何。在声明时,您是否将M附加到十进制值? decimal dec = 0.15M;
?