黑马程序员技术交流社区
标题:
将double转换成int输出,为什么输出的数尾部还有小数点?
[打印本页]
作者:
onlyonewf
时间:
2012-6-10 10:46
标题:
将double转换成int输出,为什么输出的数尾部还有小数点?
Java code
double k = 12345; System.out.println(k); //输出: 12345.0
我为了不让输出的数最后加.0,下面我先将它转换成整型,然后输出,可是结果:
Java code
double m = 12345; int n = (int)m; System.out.println(m==n ? n : m); //为什么输出的还是12345.0
作者:
张洁
时间:
2012-6-10 10:58
感觉你最后的打印有点画蛇添足额- -
double m = 12345;
int n = (int)m;
你本意是转过类型然后打印,那直接这样就可以啦:
System.out.println(n);
结果:
12345
用三元运算符的话:
m==n?n:m
这里需要n和m是同类型的。
但是你的n是int而m是double不同,且double级别高于int
因而java会将低级的int自动向高级的double转换,
之后再对比进行三元运算,因而结果还是double型的
12345.0
如果你非要用三元运算符的话,建议这么改:
System.out.println((int)m == n ? n : (int)m);
我在机子上测试过啦~结果就是你想要的:
12345
作者:
田建
时间:
2012-6-10 13:34
lz改变后的代码:double m = 12345; int n = (int)m; System.out.println(m==n ? n : m); //为什么输出的还是12345.0
可能lz还是不太清楚三元运算符,首先对m==n做判断,结果是真,返回n;结果是假,返回m。
因为结果为假,自然输出m,所以打印的还是类型转换前的double m;
作者:
吴小东
时间:
2012-6-10 13:39
顶楼上一个 三元运算结果为 false 返回 m 并没有达到你想输出 n 的结果
作者:
黄昆
时间:
2012-6-10 15:36
你这个是直接输出的double数据类型当然要带小数点了,如果你想强转就这样写
System.out.println((int)k);
作者:
胡卿
时间:
2012-6-10 23:16
最后的输出出现了问题
System.out.println(m==n?n:m);
运算前要先进行类型转换,由低级转向高级,故n就由int型转换为double型,输出结果自然为12345.0
建议改成
class Code
{
public static void main(String[] args)
{
double m = 12345;
int n = (int)m;
System.out.println((int)(m==n ? n : m));
}
}
复制代码
强制转换为int型,再做三元运算,就没问题了,结果就为12345
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2