尝试格式化数字以使其显示为0到100之间的整数,但是格式不起作用?

时间:2019-01-19 12:45:25

标签: c#

我有此代码:

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

我想要的是a的值不带小数位,例如“ 0”,“ 1”,“ 10”或“ 100”。

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

  

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

3 个答案:

答案 0 :(得分:1)

使用此方法将数字转换为int:

int int = Convert.ToInt32(number);

答案 1 :(得分:1)

格式“ D3”为only supported for integral types

这有效:

int myNumber = 1;
var val = myNumber.ToString("D3");

这将给出一个FormatException

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

答案 2 :(得分:1)

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

  

支持者:仅限整数类型。

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

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