public static Number getNumber(Object o, Number defaultValue) {
        if (o instanceof Number) {
            return (Number) o;
        }

        try {
            return Double.valueOf(String.valueOf(o));
        } catch (NumberFormatException e) {
            return defaultValue;
        }
    }
@Test
    public void testGetNumberForDifferentFormats() {
        assertEquals(1, Tools.getNumber(1, null).intValue(), 1);
        assertEquals(1.0, Tools.getNumber(1, null).doubleValue(), 0.0);

        assertEquals(42, Tools.getNumber(42.23, null).intValue());
        assertEquals(42.23, Tools.getNumber(42.23, null).doubleValue(), 0.0);

        assertEquals(17, Tools.getNumber("17", null).intValue());
        assertEquals(17.0, Tools.getNumber("17", null).doubleValue(), 0.0);

        assertEquals(23, Tools.getNumber("23.42", null).intValue());
        assertEquals(23.42, Tools.getNumber("23.42", null).doubleValue(), 0.0);

        assertNull(Tools.getNumber(null, null));
        assertNull(Tools.getNumber(null, null));
        assertEquals(1, Tools.getNumber(null, 1).intValue());
        assertEquals(1.0, Tools.getNumber(null, 1).doubleValue(), 0.0);
    }