title: Why BigDecimal.ZERO is unscaled?
body: <p>The Javadoc for <code>BigDecimal.ZERO</code> says <code>The value 0, with a scale of 0.</code> As the name suggests one may expect that <code>BigDecimal.ZERO</code> should return value <code>0.0</code> </p>
  
  <p>I also know that it is the way <code>BigDecimal.ZERO</code> is coded:</p>
  
  <pre><code>private static final BigDecimal zeroThroughTen[] = {
          new BigDecimal(BigInteger.ZERO,         0,  0, 1),
          new BigDecimal(BigInteger.ONE,          1,  0, 1),
  ...
  }
  
  // Constants
  /**
   * The value 0, with a scale of 0.
   *
   * @since  1.5
   */
  public static final BigDecimal ZERO =
          zeroThroughTen[0];
  </code></pre>
  
  <p>I don't understand why it is decided in Java that <code>BigDecimal.ZERO</code> returns unscaled zero rather than return decimal zero (at least with scale 1 by default, i.e. <code>0.0</code>).</p>
  
  <p>What is the need that <code>BigDecimal.ZERO</code> and <code>BigInteger.ZERO</code> both returns value <code>0</code> with scale <code>0</code>?</p>