将前导零添加到小于1的值

时间:2016-06-24 17:37:49

标签: c# .net string-formatting

给定小数值,当值小于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()在我的情况下是必要的。

4 个答案:

答案 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;