A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

独世

中级黑马

  • 黑马币:1

  • 帖子:24

  • 精华:0

© 独世 中级黑马   /  2013-7-29 16:09  /  1403 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Console.WriteLine(10/3*1.0);  为什么结果仍然是3int类型乘以1.0不是会隐式的转为double吗?
Console.WriteLine(10*1.0/3);  为什么这样结果就是3.333333……
求前辈解惑。

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

7 个回复

倒序浏览
从左到右,依次计算
回复 使用道具 举报
Console.WriteLine(10/3*1.0);  10/3得到int类型的3,3*1.0得到double类型的3
Console.WriteLine(10*1.0/3);  10*1.0得到double类型的10,10/3得到3.33333
从左到右依次计算的
回复 使用道具 举报
我知道是从左到右依次计算,但是3*1.0=3.0,为什么输出后是3?
回复 使用道具 举报
本帖最后由 gb2312_8 于 2013-7-29 17:01 编辑

其实已经隐式转换为double,只是输出的时候是3,你就是直接Console.WtriteLine(3.0),他也输出3

2.png (11.32 KB, 下载次数: 0)

2.png
回复 使用道具 举报
Console.WriteLine()方法会调用ToSting()方法把其它类型变成相应的字符串类型用于输出,
  1. Console.WriteLine(10/3*1.0); // (10/3)结果为3,(3/1.0) 计算结果是3.0,输出时自动取消后面的0显示是3
  2. Console.WriteLine(10*1.0/3);//(10.0/3)结果是3.3333……,输出时不会取消小数点后面的数
复制代码
回复 使用道具 举报
独世 中级黑马 2013-7-30 22:27:00
7#
非常感谢
回复 使用道具 举报
  1. double d = 10 / (3 * 1.0);
  2. Console.WriteLine(10 * 1.0 / 3);
  3. Console.WriteLine(d);
  4. Console.ReadKey();
复制代码
这就是一个先后顺序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马