Я не эксперт, расскажите.
Ну прямой кастинг в integer может и не сработать. Я подробностей не помню за давностью лет, что-то с Two's compliment ( гуглим).
Стандартный метод в С - это signbit().
В Яве, нужно поделить +1 на ваш 0, если -inf получится то у вас минус, а если +inf - плюс :)