黑马程序员技术交流社区

标题: 关于数据类型的问题 [打印本页]

作者: 陈世伟    时间: 2012-4-4 09:14
标题: 关于数据类型的问题
int a = 10,b=3;
double quo = a / b;
console.writeline(quo);
quo是double类型的,为什么运行的结果是3,而不是3.0呢?
作者: 霍世勇    时间: 2012-4-4 09:43
因为你参与运算的数据类型都是整形的,所以运算结果也是整形的数!
作者: 刘冬晓    时间: 2012-4-4 10:15
关于double中尾随零问题,因为浮点数据类型没有尾随零字符的任何内部表示形式。 例如,这些数据类型不区分 4.2000 和 4.2。因此,在显示或输出浮点值时,所以尾随零字符不会出现。


作者: 徐瑞    时间: 2012-4-4 10:17

int a = 10,b=3;
double quo = a / b;
console.writeline(quo);

算数表达式两边参与运算的都是int类型,所以得到的结果也是int类型
double quo = a / b;
想得到double类型
double quo = a*1.0 / b;多种方法
作者: 韩艳君    时间: 2012-4-4 10:24
a和b都是整型变量,在计算时,两边都是整型,那么计算结果就是整型
作者: 张世豪    时间: 2012-4-4 10:49
在java中可能是3.0,但是在c#中它后面的0被默认去掉了,例如:把你的代码改为:
int i = 7;
            int j = 2;
            double a =3.0;
            Console.WriteLine(a);
            Console.ReadKey();
它输出的还是3,如果把double a=3.0,改为3.50的话那么a输出的就是3.5跟前面的int型没关系。
作者: 曾驰文    时间: 2012-4-4 10:54
int a = 10,b=3;
double quo =(double) a / b;
console.writeline(quo);

作者: 郑帅    时间: 2012-4-4 11:30
隐式转换了。
作者: 李志祥    时间: 2012-4-4 12:01
int a = 10,b=3,a,b都是整型,结果也会是整型的
作者: 黄雄斌    时间: 2012-4-4 12:15
算数表达式两边参与运算的都是int类型,所以得到的结果也是int类型
如果将double quo = a / b改成double quo =(double) a / b;
得到的结果也是3.33333333333333并不是3.0
作者: 杨伟芬    时间: 2012-4-4 16:53
qvo 是double型的 qvo=3.0 在快速监视中可以看到 计算的数据类型和结果是相同的
作者: 郭耀强    时间: 2012-4-6 16:44
比如说你定义的一个double 类型 double a =10,这样是对的。
           你在计算的时候a和b都是整数类型,两者相处后结果肯定也是int类型,运算后的结果是给c赋值了,并不是把运算的结果进行转换,所以说还是3,如果你想变成带有小数部分的,那你就可以把计算的结果就行转换double c =(double)10/3,这样的话计算的结果就会是3.33333333333333了。这样说你明白了么?
作者: ★心秒★    时间: 2012-4-7 13:27
看看我给你的图!!    或许你就知道了……

aaa.jpg (32.51 KB, 下载次数: 126)

aaa.jpg

az.jpg (37.11 KB, 下载次数: 120)

az.jpg

作者: 黄国钢    时间: 2012-4-7 20:52
因为定义的变量a和b都是int类型的,在计算a/b时,这个表达式的值就为3,这个时候还是int类型,然后赋给double类型的变量quo,就会进行隐式转换,
值3的类型就会转换成double类型,输出的3是double类型,只是看起来是int类型。
假如改成这样:double quo = (a*1.0)/b,等号右边的int类型就会提升为double类型,这样表达式的值为3.33333333333333而不是3。
作者: 刘真    时间: 2012-4-7 22:09
因为参与运算的两边元素都是整形,所以得到得到的结果也是整形3
int类型向double类型转换时发生自动转换不丢失精度
相当于对double类型的quo直接赋值一个整形数据3
作者: Household    时间: 2013-12-8 21:00
注释:
int a = 10,b=3;    //定义两整形的常量a,b;
double quo = a / b;  //double quo定义的事quo的数据类型为Double型,并此语句只是两整数运算,结果必然是int,若非要得到3.0,即下面执行语句可执行成功:
public static String getFormatDouble(double quo)
{
DecimalFormat df=new DecimalFormat("0.0");
        return df.format(quo);
}
作者: 王新年    时间: 2014-1-6 11:31
原因是 a和b都是int型的,所以a/b的结果也是int型的,然后把一个整形的结果赋值给double型,所以quo的值为3
作者: monkey    时间: 2014-2-13 15:37
先执行int类型的除法运算a/b,其值为3,再把int类型转为double类型,其值quo为3.0,输出时,在标准输出流中为3




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