static PreciseDecimal safegetInstanceDouble(final long base, final int factor)
  {
	final long absBase = Math.abs(base);
	if (absBase > MAX_PRECISE_DOUBLE_BASE)
	{
	  final int scale = (int) (absBase / MAX_PRECISE_DOUBLE_BASE);
	  // TODO also check the factor not to be neg.
	  if (scale > 100)
	  {
		return getInstance(base / 1000, factor - 3);
	  }
	  if (scale > 10)
	  {
		return getInstance(base / 100, factor - 2);
	  }
	  return getInstance(base / 10, factor - 1);
	}
	else
	{
	  return getInstance(base, factor);
	}
  }