黑马程序员技术交流社区

标题: 急急急!三元运算符的问题 [打印本页]

作者: MGC    时间: 2014-7-31 09:20
标题: 急急急!三元运算符的问题
saveTwo(12.3456,3,true);//12.34

public static void saveTwo(double d,int scale,boolean isRound)
{
               
double base = Math.pow(10,scale);

double num = isRound?Math.round(d*base)/base:((int)(d*base))/base;
System.out.println("num="+num);

这个三元运算符,他的返回值是如何确定的?
double num = isRound?Math.round(d*base)/base:((int)(d*base))/base这个三元运算表示看不明白。。。

作者: sunny~    时间: 2014-7-31 10:20
看不懂,代码有点乱
作者: hejinzhong    时间: 2014-7-31 11:23
中间的笑脸是:吗?
作者: 格子、    时间: 2014-7-31 11:31
三元运算符的正确格式是: 条件?返回值1:返回值2
举个简单例子:
  1. int x = 5;
  2. int y = x>5?1:2;
复制代码

返回值结果为2,因为x>5为假也就是false,所以返回值为2
这个三元运算符可以和if相互转化!
作者: 练习题    时间: 2014-7-31 11:34
isRound判断这个值如果为true
Math.round(d*base)/base返回这个计算出来的值
(int)(d*base))/base false返回这个计算出来的值
返回double
作者: liqi    时间: 2014-7-31 11:43
笑脸应该是:吧  
条件1  Math.round(d*base)/base  先运算 Math.round(d*base)这个是调用Math类中的round()方法,返回最接近参数的 long或int,,   然后用这个返回值参与运算    即   返回值/base
条件2   (int)(d*base))/base    先把(d*base))强转为int类型  然后用强转后的数参与运算    强转后数/base
然后看怎样调用该函数 saveTwo(double d,int scale,boolean isRound),调用时传递的第三个参数为真,则返回条件1的结果
如果参数为假,则返回条件2的结果




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