code: @SuppressWarnings("unchecked")
      public static <T> T asType(Number self, Class<T> c) {
          if (c == BigDecimal.class) {
              return (T) toBigDecimal(self);
          } else if (c == BigInteger.class) {
              return (T) toBigInteger(self);
          } else if (c == Double.class) {
              return (T) toDouble(self);
          } else if (c == Float.class) {
              return (T) toFloat(self);
          }
          return asType((Object) self, c);
      }
docs: Transform this number to a the given type, using the 'as' operator.  The
  following types are supported in addition to the default
  {@link #asType(java.lang.Object, java.lang.Class)}:
  <ul>
  <li>BigDecimal</li>
  <li>BigInteger</li>
  <li>Double</li>
  <li>Float</li>
  </ul>
  @param self this number
  @param c the desired type of the transformed result
  @return an instance of the given type
  @since 1.0