java中怎样把int转成double。我刚开始学java,遇到了这样一个改错题,研究好久都不对。
发布网友
发布时间:2022-05-20 17:46
我来回答
共6个回答
热心网友
时间:2023-11-05 16:40
int i=1,j;
j=12;
i=1/10;
i=(int) (1*0.1);
System.out.println("i="+i);
=号是赋值的意思,不管你怎么定义i的,下面用了i=???(可以是具体数字,也可以是一个运算)就是给i赋了新值,跟以前定义的就没有关系了(仅限于在某个范围内,你应该还不知道什么叫全局变量,什么叫局部变量,就不说那么多了,这里的意思就是在这个程序中,下面给i赋值了,上面所有给i赋什么值都没有关系)。
这样改的话打印出来是0。在i=1/10的时候,i就已经等于0了,因为1/10的意思是指1除以10取整,而1除以10取整得0,下面一个继续给i赋值
i=1*0.1;这一句本身就是错误的,因为i是int 型,而右边计算所得的值是一个精度浮点型,需要强制转换一下,你多看看书吧,书上会有这些说明的。
打印的就是0了
你的问题补充我来给你解释一下,i=1/10,这个时候得的是0,而不是double型的,因为1/10的意思是指1除以10取整,还是int型,所以下面的给i赋浮点型的值。肯定就会出错。
如果有不懂得可以继续问
热心网友
时间:2023-11-05 16:40
在java语言中两个int型的值相除还是int型,而且只保留整数部分,1/10=0.1 所以结果应该是0,而不是0.1
i=i*0.1 现在i=0,右边运算后是等于0.0,因为java语言中会将低精度类型自动转成高精度类型,所以结果是0.0是DOUBLE类型,而左边的变量i却是int型,显然高精度类型不会自动转成低精度类型,因为那样会损失精度,这个程序会报错。需要强制转换。i=(int)i*0.1
热心网友
时间:2023-11-05 16:41
1、上面所说的i=1,只是初始化,以后随时都可以赋值。
2、java中,/ 为取整运算,结果默认int型的。想要得到double型,必须加上强制转换。
如:i=(double)1/10; -->i的运算结果为0.1
i=1/10; -->i的运算结果为0追问i=(double)1/10 会报错:
可能损失精度
找到:double
需要:int
i=(double)1/10
1 错误
热心网友
时间:2023-11-05 16:41
i定义为int类型,所以它只会取到整数部分(比如 int i=10/6 那么得到的i=1),所以你的i=1/10得到的i是0,而后面的i=1*0.1在编译的时候肯定会报错,损失精度,所以这样编译不通,建议定义i为double类型 那么打印的i=0.1追问同样结果都是0.1,为什么i=1/10,就取整数部分,还是int类型。
而i=1*0.1,却成了double类型,会报错。
怎样使他转换成double类型?
热心网友
时间:2023-11-05 16:42
首先你要明白i/10是一个int除以一个int,所得的结果肯定是int,不会是double。
热心网友
时间:2023-11-05 16:43
你的补充问题是错误的。
i=i/10; i=1的话,这个数应该是0,而不是0.1,这个表示整除的意思
i=1*0.1; 这个是编译通不过的。
上面已经说过i=1了,怎么还可以再给 i 赋值。。。。请不要和数学相混淆,
至于结果为0