请教老师,这样写是否正确?

请教老师,这样写是否正确?

 @Override
    public int compareTo(Goods o) {
        double price1 = this.getPrice();
        double price2 = o.getPrice();
//        int n = new Double(price2-price1).intValue();
//        return n;
        return (int)(price2-price1);
    }

老师好!教程中,定义一个Double类型的对象,然后取整,再自动拆箱为整型类弄,再返回。

我写的是直接返(price2-price1)对结果强制转换为int类型,我在编译器里运行了,效果是一样的。

这样写可以吗?有什么弊端?

另外,我试了一下,这两个比较器不能对小数部分无法进行比较,我用了一个笨方法

return (int)((price2*1000)-(price1*1000));  //乘100可以比较两个小位,乘1000可以比较三位小数

这样去写,是能成功的比较小数部分,但有限制性,不知道更好的方法是什么?

http://img1.sycdn.imooc.com//climg/5e5d0b6509be013107680442.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,直接返(price2-price1)对结果强制转换为int类型,也是正确的。

    2、同学所说的笨方法也是正确的!而java中double类型的比较可参考如下这种:

Double d1 = new Double(45.23);
Double d2 = new Double(45.22);
int dou = d1.compareTo(d2);
System.out.println(dou);

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • Michael_2020 提问者 #1
    谢谢老师答疑。
    2020-03-03 10:18:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师