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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段朝骞 中级黑马   /  2013-9-27 22:03  /  1873 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 段朝骞 于 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();
        }
    }
}


评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

6 个回复

倒序浏览
double c =(double) a / b;  //然后就可以了。两个int类型的数算出来的还是int类型。

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


希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
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

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


回复 使用道具 举报 1 0
本帖最后由 段朝骞 于 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保留两位小数
回复 使用道具 举报
类型转换两边类型不同,需要两边类型相同,才做类型转换
             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);

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
段朝骞 发表于 2013-9-27 22:48
double db=3;  //这个在调试时显示的是3.0
最后Console.WriteLine();的时候打印为3了

学习了。。。谢谢啊。。。最后这个真没注意过,一直以为不能带零呢 。。
回复 使用道具 举报
学习了,继续学习中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马