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

Adding leading zero to value less than 1

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

例如

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

1.20 ->  "1.20"   - Value remains the same

小数点前的值可以是任意长度,小数点后的值只能是2位,即。货币。 String.Format() 可以实现吗?还是我应该依赖基本的 if 语句?

String.Format() 文档让我很困惑。

我检查了其他几个 questions/answers,但似乎找不到我要找的东西。

编辑:如几个答案所述,这种前导零加法应该是调用值的 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;?