C#中运算结果中数值类型的问题
doubler=9doublec=23/7*r返回int型doublec=23.0/7*r返回double型doublec=r*23/7返回double型这是为什么?...
double r=9
double c=23/7*r 返回int型
double c=23.0/7*r 返回double型
double c= r*23/7 返回double型
这是为什么? 展开
double c=23/7*r 返回int型
double c=23.0/7*r 返回double型
double c= r*23/7 返回double型
这是为什么? 展开
4个回答
展开全部
你何以见得它们返回的分别是int,double和double.上面三个都应该返回double型.
double r = 9; //编译器会认为你的9是double类型,而不是int类搜肆尺型
double c = 23 / 7 * r //世高因为r是double类型,但是23和7不是,所以先按int计算,23/7=3再隐式转换成double的3.0再乘以r(9.0)结果就是27.0
double c=23.0/7*r //同理
double c= r*23/7 //同理
但是雹蔽如果这样写:
double c = 23 / 7 * 9; // 因为没有带小数的,编译器默认都是int型,会按Int型计算,然后隐式转换后给c赋值,所以是23 / 7 = 3(int类型的计算)再乘以 9,所以结果27
double r = 9; //编译器会认为你的9是double类型,而不是int类搜肆尺型
double c = 23 / 7 * r //世高因为r是double类型,但是23和7不是,所以先按int计算,23/7=3再隐式转换成double的3.0再乘以r(9.0)结果就是27.0
double c=23.0/7*r //同理
double c= r*23/7 //同理
但是雹蔽如果这样写:
double c = 23 / 7 * 9; // 因为没有带小数的,编译器默认都是int型,会按Int型计算,然后隐式转换后给c赋值,所以是23 / 7 = 3(int类型的计算)再乘以 9,所以结果27
更多追问追答
追问
用writeline输出,第一个c是没有小数部分的
追答
那是因为在WriteLine的时候没有格式化输出的结果,本身值就是27
你可以使用 WriteLine(c.GetType().ToString())就可以看到类型是Double类型了./
展开全部
计算结果会以最大则猛睁的类型作为返回值的类型
如:int和float相乘 结果孙岁会返回float
返回两个数中空间最大知春的类型
如:int和float相乘 结果孙岁会返回float
返回两个数中空间最大知春的类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般这种情况,根据你的左边的类型加个显式或者隐式转换就可以避免
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该都是double啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询