在page上,它说:
“00”说明符使得值四舍五入到小数点前面的最近数字,其中始终使用从零开始的舍入。例如,使用“00”格式化34.5将导致值35。
“00”是一个特例还是一个例子?为什么特别挑出来?
除“00”以外的格式的舍入模式是什么?它特别提到了整数舍入;怎么样在小数点后n位舍入?
ToString(“0”)做什么?它与“00”相同但没有四舍五入吗?
我尝试了ToString(“00”),它给了我一个零填充数字,我只期待一个数字。
答案 0 :(得分:5)
“00”不是一个特例,只是一个例子,虽然措辞的方式使它听起来像一个特例。
来自文档:
“0”自定义格式说明符用作零占位符符号。 如果正在格式化的值在其中的位置有一个数字 零出现在格式字符串中,该数字被复制到 结果字符串;否则,结果字符串中会出现零。该 小数点前面最左边零点的位置和 小数点后最右边的零确定数字范围 它始终存在于结果字符串中。
所以ToString(“00”)意味着你将在小数点左边有两位数的最小,小数点右边没有数字(那些得到舍入)。同样,ToString(“000”)将为您提供至少3位数字,依此类推。
您还可以控制显示在小数点右侧的精确位数。 ToString(“000.00”)将为您提供小数点左侧至少3位数,右侧正好为2位数。小数点右边的任何额外数字都将被舍入。
以下是一些传递断言来证明:
var value = 67.89;
Assert.AreEqual("68", value.ToString("0"));
Assert.AreEqual("68", value.ToString("00"));
Assert.AreEqual("068", value.ToString("000"));
Assert.AreEqual("067.9", value.ToString("000.0"));
Assert.AreEqual("067.89", value.ToString("000.00"));
Assert.AreEqual("067.890", value.ToString("000.000"));
答案 1 :(得分:1)
它看起来像是一个文档错误,他们的示例将其显示为填充整数输出。
int.ToString("format")
等同于
string.Format("0:format", int)