我对Java中的MAX_SAFE_INTEGER感到困惑

时间:2019-08-30 08:11:02

标签: java double

我的理解是,在Java中安全地表示一个双精度数的最大位数是2 ^ 53-1或9007199254740991。而且这与小数无关,因为它由指数位表示。请考虑以下内容:

    double dblprice = 9007.199254740991;
    System.out.println(dblprice);
    dblprice = 9007199.254740991;
    System.out.println(dblprice);

输出为

9007.199254740992
9007199.25474099

我不明白为什么在第一种情况下,最后一个1被2取代,而在第二种情况下,为何最后一个数字被丢弃。非常感谢!

0 个答案:

没有答案