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型

这是为什么?
展开
 我来答
百度网友115a69b
2013-10-16 · TA获得超过253个赞
知道小有建树答主
回答量:428
采纳率:50%
帮助的人:383万
展开全部
你何以见得它们返回的分别是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
更多追问追答
追问
用writeline输出,第一个c是没有小数部分的
追答
那是因为在WriteLine的时候没有格式化输出的结果,本身值就是27
你可以使用 WriteLine(c.GetType().ToString())就可以看到类型是Double类型了./
百度网友07723d851
2013-10-16 · TA获得超过117个赞
知道答主
回答量:123
采纳率:0%
帮助的人:58万
展开全部
计算结果会以最大则猛睁的类型作为返回值的类型
如:int和float相乘 结果孙岁会返回float
返回两个数中空间最大知春的类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiat206
2013-10-16
知道答主
回答量:24
采纳率:0%
帮助的人:17.5万
展开全部
一般这种情况,根据你的左边的类型加个显式或者隐式转换就可以避免
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仰起脸__微笑
2013-10-16 · TA获得超过108个赞
知道答主
回答量:150
采纳率:0%
帮助的人:51.8万
展开全部
应该都是double啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式