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

© MGC 中级黑马   /  2014-7-31 09:20  /  1200 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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这个三元运算表示看不明白。。。

5 个回复

倒序浏览
看不懂,代码有点乱
回复 使用道具 举报
中间的笑脸是:吗?
回复 使用道具 举报
三元运算符的正确格式是: 条件?返回值1:返回值2
举个简单例子:
  1. int x = 5;
  2. int y = x>5?1:2;
复制代码

返回值结果为2,因为x>5为假也就是false,所以返回值为2
这个三元运算符可以和if相互转化!
回复 使用道具 举报
isRound判断这个值如果为true
Math.round(d*base)/base返回这个计算出来的值
(int)(d*base))/base false返回这个计算出来的值
返回double
回复 使用道具 举报
笑脸应该是:吧  
条件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的结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马