在此page上说:


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


“ 00”是特殊情况还是示例?为什么要特别挑出来?

除“ 00”以外的格式的舍入模式是什么?它专门提到整数舍入;四舍五入到小数点后n位呢?

ToString(“ 0”)有什么作用?是否与“ 00”相同但不舍入?

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

最佳答案

“ 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"));

10-04 22:30
查看更多