Jeśli ograniczysz przedział wartości do dopuszczalnych przez 32-bitowego longa, możesz używać natywnego kalkulatora javy
. Jeżeli jednak chcesz się "zmieścić" z całym zakresem (coś tam razy 10E(+-)38, o ile pamiętam) to musisz zapomnieć o longu i zdefiniować własny typ (myslę, że 100 bitów wystarczy, bo liczba 40-cyfrowa zajmuje 20 bajtów = 160 bitów w kodzie BCD, czyli 100 bitów w kodzie "pełnym") i napisać własny kalkulator z operacjami: mnożenia przez 10 (prościzna - kombinacja mnożenia przez 2 i dodawania) oraz dzielenia przez 10 (gotowce znajdziesz w sieci). Przepisujesz mantysę do nowego typu, uzupełniasz od lewej zerami lub jedynkami zależnie od znaku liczby, a następnie w pętli o liczbie cykli równej eksponentowi mnożysz razy 10 (jeśli eksponent jest dodatni) lu dzielisz przez 10 (jesli ujemny). Jeśli eksponent = 0, zostawiasz mantysę w spokoju.