Since every possible byte, short, char, int, float, double can be represented as a double its is much more efficient (as its a primitive instead of any object) and simpler to use double instead of Number You would need specific types if you need long accurately or BigDecimal or BigInteger.