我有此代码:
var a = (((double)x.Row.Points / x.Row.Viewed) * 100).ToString("D3")
我想要的是a的值不带小数位,例如“ 0”,“ 1”,“ 10”或“ 100”。
但是这给了我这个堆栈错误。谁能解释为什么D3作为格式字符串不起作用?请注意,在只是ToString()之前,它就可以正常工作
System.FormatException:指定的格式'D2'无效
答案 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()