C# 尝试设置数字格式,使其显示为0到100之间的整数,但格式不为';不行?

C# 尝试设置数字格式,使其显示为0到100之间的整数,但格式不为';不行?,c#,C#,我有以下代码: var a = (((double)x.Row.Points / x.Row.Viewed) * 100).ToString("D3") 我想要的是a的值,如“0”、“1”、“10”或“100”,不带小数点 但它给了我这个堆栈错误。有人能解释为什么D3作为格式字符串不起作用吗?请注意,它在使用ToString()之前工作正常 System.FormatException:指定的格式“D2”无效 使用此选项将数字转换为int: int int = Convert.ToInt32(

我有以下代码:

var a = (((double)x.Row.Points / x.Row.Viewed) * 100).ToString("D3")
我想要的是a的值,如“0”、“1”、“10”或“100”,不带小数点

但它给了我这个堆栈错误。有人能解释为什么D3作为格式字符串不起作用吗?请注意,它在使用ToString()之前工作正常


System.FormatException:指定的格式“D2”无效


使用此选项将数字转换为int:

int int = Convert.ToInt32(number);
格式“D3”为

i、 e

这项工作:

int myNumber = 1;
var val = myNumber.ToString("D3");
这将产生
格式异常

double myNumber = 1.0;
var val = myNumber.ToString("D3");

十进制格式说明符仅适用于:

支持:仅限整数类型

此外,它还用于在左侧填充零,这似乎不是您想要的。出于您的目的,您可以强制转换为int:

var a = ((int)(((double)x.Row.Points / x.Row.Viewed) * 100)).ToString()

“堆栈错误”是什么意思?我将发布errorSystem.FormatException:指定的格式“D3”无效请参见。我希望它能帮助你。相关: