开发者社区> 问答> 正文

Java的double类型在运算时,结果有的时候不能精确显示

screenshot
screenshot
我也只能确定0.1不能被精确显示,具体该如何解这样的题呢?
其实我进一步思考了。我以为就看尾数是不是5。比如0.5、0.05。因为2的-x次方的尾数都是5。是5就能精确显示,不是就不能。但是后来发现
screenshot
说明不能只靠最终结果来判断...............那该怎么判断啊?
问题补充:我知道有BigDecimal这个类,我只可以用这个类避免精度问题。
但是我的问题就是如果做笔试题的时候,遇到这种挫科的问题(如第二幅图所示,刚刚图错了,不好意思哈~~呵呵),该如何找到正确的选项?

展开
收起
蛮大人123 2016-06-06 16:05:06 2753 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    对于float 和 double, 建议用BigDecimal进行运算。

    import java.math.BigDecimal;
    public class DoubleTest {
        public static void main(String[] args) {
            double d = 3.0d;
            double f = 2.1d;
            BigDecimal bd1 = new BigDecimal(Double.toString(d));
            BigDecimal bd2 = new BigDecimal(Double.toString(f));
            System.out.println("result=" + bd1.subtract(bd2));
        }
    }
    2019-07-17 19:28:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载