如何像下面的例子那样保留末尾的零?当我输入-。如果不带前导零,则只显示-0.23,不带后面的零。但是当我输入-0.230时,它产生的预期结果是-0.230。
Actual output: -.230 -> -0.23
Expected output: -.230 -> -0.230
我也试过String.Format("{0:0.000}", n)
,但它仍然不起作用。
看起来您要转换为string
,因此您可以使用以下
someNumber.ToString("N3");
请参阅MSDN文档了解其工作原理,大约在页面的中间部分,它还提供了一堆不同代码的示例。
似乎您正在打印与您执行的相同的数字string.format.
尝试存储string的输出。格式化并使用它。我用了和你一样的方法得到了预期的答案。参考以下代码
var n = -.23;
string str = string.Format("{0:0.000}", n);
Console.WriteLine(str); // This will give you an expected output
Console.WriteLine(n); // This won't give you an expected output
问题中提到的double
和decimal
是完全不同的类型。double
是一个二进制浮点值,它不保留后面的零:
double value = -0.230;
Console.Write(value); // -0.23
与double
不同,decimal
是十进制浮点数,它存储后面的零:
decimal value = -0.230m; // note suffix "m"
Console.Write(value); // -0.230
当用string
表示时,这些类型的值可以格式化,例如用F3
格式字符串,表示小数点"后的3位数字:
double v1 = -0.230;
decimal v2 = -0.230m;
Console.Write($"{v1:f3} {v2:f3}");
结果:
-0.230 -0.230