将前导零添加到小于 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;
?
给定一个十进制值,当值小于 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;
?