@Nonnull
	public static Number rem(@Nonnull Number first, @Nonnull Number second) {
		// Check for widest types first, go down the type list to narrower types until reaching int.
		if (second instanceof Double || first instanceof Double) {
			return first.doubleValue() % second.doubleValue();
		} else if (second instanceof Float || first instanceof Float) {
			return first.floatValue() % second.floatValue();
		} else if (second instanceof Long || first instanceof Long) {
			return first.longValue() % second.longValue();
		} else {
			return first.intValue() % second.intValue();
		}
	}
@Test
	void testRem() {
		assertEquals(4, NumberUtil.rem(13, 9));
		assertEquals(4D, NumberUtil.rem(13, 9.0D));
		assertEquals(4F, NumberUtil.rem(13, 9.0F));
		assertEquals(4L, NumberUtil.rem(13, 9L));
	}