黑马程序员技术交流社区

标题: double和int之间的类型转换 [打印本页]

作者: 独世    时间: 2013-7-29 16:09
标题: double和int之间的类型转换
Console.WriteLine(10/3*1.0);  为什么结果仍然是3int类型乘以1.0不是会隐式的转为double吗?
Console.WriteLine(10*1.0/3);  为什么这样结果就是3.333333……
求前辈解惑。


作者: 淡忘回忆    时间: 2013-7-29 16:14
从左到右,依次计算
作者: 淡忘回忆    时间: 2013-7-29 16:16
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
从左到右依次计算的
作者: 独世    时间: 2013-7-29 16:36
我知道是从左到右依次计算,但是3*1.0=3.0,为什么输出后是3?
作者: gb2312_8    时间: 2013-7-29 16:59
本帖最后由 gb2312_8 于 2013-7-29 17:01 编辑

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

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

2.png

作者: 黑骏马    时间: 2013-7-29 18:08
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
非常感谢
作者: 殘遛の丶狳味    时间: 2013-8-2 09:02
  1. double d = 10 / (3 * 1.0);
  2. Console.WriteLine(10 * 1.0 / 3);
  3. Console.WriteLine(d);
  4. Console.ReadKey();
复制代码
这就是一个先后顺序




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2