如何获取var的数据类型

时间:2017-04-30 17:40:29

标签: c#

我正在尝试获取int变量的数据类型(decimalvar {type}等):

var ratingSum = ratings.Sum(x=>x.Rating);//7
var ratingCount = ratings.Count();//2
decimal avgValue = decimal.Parse((ratingSum / ratingCount).ToString());//getting 3
var avgValue2 = (ratingSum / ratingCount).ToString(); //getting 3

我无法获得avgValueavgValue2的确切值来检查它是int还是decimal。我总是得到3而不是3.5。

如果ratingSum为8且ratingCount为2,则我的输出应为4,表示avgValue属于int

3 个答案:

答案 0 :(得分:2)

您似乎想知道为什么您的结果不正确,而不是avgValueavgValue2的类型(第一个是decimal,第二个是string)。以下是对结果的解释。

ratingSum的类型为intratingCount的类型也为int

两个操作数均为int时的除法将产生int而不包含部分结果。即7 / 2 = 3。要获得浮动结果,您可以使用此技巧:

var avg = 1.0 * ratingSum / ratingCount; // 3.5

答案 1 :(得分:0)

获取变量的类型,您可以使用以下内容:

variable.GetType().Name;

参考:How can I get the data type of a variable in C#?

答案 2 :(得分:0)

整数除法总是返回一个趋于零的整数,所以例如这将是以下除法的结果:

5 / 3 = 1 instead of 1.66
2 / 4 = 0 instead of 0.5

您可以通过将整数之一强制转换为float或double来强制.NET使用float除法,因此示例必须像这样编写:

(float) 5 / 3 = 1.66
(float) 2 / 4 = 0.5

您可以在MSDN文档中查看division operator

的更多信息

对于另一个解决为什么存在整数除法的StackOverflow问题,这是一个很好的答案。 Why integer division in c# returns an integer but not a float?