Storing large decimal numbers in Java

前端 未结 4 960
离开以前
离开以前 2020-12-21 02:03

I need to store 17774132 in a double format, but it seems that double is to small since I get 1.7774132E7.

How can I overcome this problem? I need some kind of prim

相关标签:
4条回答
  • 2020-12-21 02:18

    1.7774132E7 is exactly the same as 17774132. It's just displayed in scientific notation. A double is more than capable of holding this value. As others have said, though, use BigDecimal if you're worried about size or accuracy.

    0 讨论(0)
  • 2020-12-21 02:19

    Remeber that means 1.7774132 * 10^7, so the value is represented by:

    1.7774132 * 10000000

    That's a big number, don't you think?

    Java outputs by default on scientific notation if needed. Big numbers like that are expressed in scientific notation.

    0 讨论(0)
  • 2020-12-21 02:21

    In java if you want accurate calculations for large numbers with fractions, you should use java.math.BigDecimal class. The integer counterpart is java.math.BigInteger.

    Also I think double can accomodate 17774132, it's just showing the value in something called as "E Notation" which a Scientific notation to denote numbers. Refer to this : http://en.wikipedia.org/wiki/Scientific_notation#E_notation

    0 讨论(0)
  • 2020-12-21 02:29

    First, hopefully you recognize the issues with floating-point decimal representations.

    17774132 is equivalent to 1.7774132E7; the "E7" means it is being multiplied by 10^7. If your issue is that you want it displayed differently, you can use a NumberFormat.

    Note that 17774132 is actually an integer and well below the threshold of ~2.1 billion for the int primitive type. The long primitive type lets you go even higher if you are actually using integers.

    If you want to represent the number differently and it is not an integer, you can try BigDecimal (or BigInteger for legitimate integers too big for a long).

    0 讨论(0)
提交回复
热议问题