2

在此页面上它说:

“00”说明符使值四舍五入到小数点前最接近的数字,其中始终使用从零开始的四舍五入。例如,使用“00”格式化 34.5 将导致值 35。

“00”是特例还是例子?为什么是专门挑出来的?

“00”以外的格式的舍入方式是什么?它特别提到整数舍入;n位小数后四舍五入怎么办?

ToString("0") 是做什么的?它是否与“00”相同但没有四舍五入?

我尝试了 ToString("00") ,它给了我一个零填充数字,我期望只有一个数字。

4

2 回答 2

6

“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"));
于 2013-07-30T03:27:08.420 回答
1

对我来说,这看起来像是一个文档错误,他们的示例将其显示为填充整数输出。

int.ToString("format") 

相当于

string.Format("0:format", int)
于 2013-07-30T02:49:39.197 回答