我正在使用Visual C#Express 2010.我试图划分三个整数,但结果总是为0。
我的代码:
//earlier in the code:
int totalKeywords = 3;
//the problem code:
decimal onePercent = 100 / totalKeywords / 100; //100% divided by the number of keywords divided by 100 to make one percent
MessageBox.Show(onePercent);
//result: 0
//what I want: 0.33 or more acurate
我尝试了什么:
猜测:
我的努力:
答案 0 :(得分:4)
尝试100m / totalKeywords / 100
你必须将你的一个数字(至少)定义为十进制。
100是一个int
100m是小数
http://msdn.microsoft.com/en-us/library/364x0z75.aspx
如果您希望将数字实数文字视为十进制,请使用后缀m或M,例如:
decimal myMoney = 300.5m;
答案 1 :(得分:4)
让我们分解一下:
decimal onePercent = 100 / totalKeywords / 100;
首先,将整数文字100除以整数变量totalKeywords(值为3)。结果:整数33。
接下来,将结果33除以整数字面数100.结果:整数0。
右侧表达式的类型为int,值为0.将其隐式转换为decmal 0m,因此您可以将其分配给十进制变量onePercent。
结果:0m。
正如其他人已经注意到的那样,要修复最左边的常数(如果不是全部,为清晰起见),则将其设为小数。这样做,因为int将隐式转换为decimal:
decimal onePercent = 100m / totalKeywords / 100;
这完全是明确的,如果有点超过顶部:
decimal onePercent = 100m / (decimal)totalKeywords / 100m;
答案 2 :(得分:2)
将只得到整数,然后它将被分配给十进制,因此它给你0.