@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null || getClass() != obj.getClass()) {
			return false;
		}
		JsonNumber other = (JsonNumber) obj;
		if (value == null) {
			return other.value == null;
		}
		if (isIntegral(this) && isIntegral(other)) {
			return getAsNumber().longValue() == other.getAsNumber().longValue();
		}
		if (isFloatingPoint(this) && isFloatingPoint(other)) {
			return getAsNumber().doubleValue() == other.getAsNumber()
					.doubleValue();
		}
		return value.equals(other.value);
	}