黑马程序员技术交流社区

标题: 关于类型转换 [打印本页]

作者: 段朝骞    时间: 2013-9-27 22:03
标题: 关于类型转换
本帖最后由 段朝骞 于 2013-9-27 22:53 编辑

问题就在代码上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 类型转换
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 10, b = 3;
            double c = a / b;  //这里的c应该是3.0
            double db = 3;  //这里的db也是3.0
            Console.WriteLine("db={0},c={1}",db,c);  //最后打印出来的怎么都成了3,小数后面的怎么都没了
            Console.ReadKey();
        }
    }
}



作者: 黄广祯    时间: 2013-9-27 22:19
double c =(double) a / b;  //然后就可以了。两个int类型的数算出来的还是int类型。

double db=3;  //为什么会是3.0呢 ?输出只是3,如果3.1415,这些小数位都是不会丢失的


希望能帮到你
作者: 许庭洲    时间: 2013-9-27 22:26
using System;
class Test
{
       public static void Main() {
               Console.WriteLine(5/3);
                Console.WriteLine(4/3);
                Console.WriteLine((5/3)==(4/3));
                Console.WriteLine(5.0/3);
                Console.WriteLine(4.0/3);
                Console.WriteLine((5.0/3)==(4.0/3));
        }
}
///////////////////////////////////////////////////////////////////////////////////////////////
输出结果:
1
1
True
1.66666666667
1.33333333333
False

///////////////////////////////////////////////////////////////////////////////////////////////



作者: 段朝骞    时间: 2013-9-27 22:48
本帖最后由 段朝骞 于 2013-9-27 22:52 编辑
黄广祯 发表于 2013-9-27 22:19
double c =(double) a / b;  //然后就可以了。两个int类型的数算出来的还是int类型。

double db=3;  //为 ...

double db=3;  //这个在调试时显示的是3.0
最后Console.WriteLine();的时候打印为3了


刚查了下MSDN发现
在Console.WriteLine();中有许多打印格式,例如Console.WriteLine("{0:0.00}",4.0/3); 打印出来1.33保留两位小数

作者: lgh521911    时间: 2013-9-28 08:14
类型转换两边类型不同,需要两边类型相同,才做类型转换
             int a = 10, b = 3;
            double c =double( a / b);  //这里C的值为双精度型,他的赋值计算边也应为相同类型,定义a,b为
            int类型,所以这里要用强制类型转换
            double db =double( 3);  //这里的db也是3.0,虽然这里的定义db为double类型个,但是赋值为整形,在输出时只能输出为3,如果db的赋值为双精度的3.01,你试试?
            Console.WriteLine("db={0},c={1}",db,c);
作者: 黄广祯    时间: 2013-9-28 20:26
段朝骞 发表于 2013-9-27 22:48
double db=3;  //这个在调试时显示的是3.0
最后Console.WriteLine();的时候打印为3了

学习了。。。谢谢啊。。。最后这个真没注意过,一直以为不能带零呢 。。

作者: andylau    时间: 2013-9-28 21:09
学习了,继续学习中




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