Как найти и обработать двоичное / числовое переполнение в J2ME - PullRequest
0 голосов
/ 17 сентября 2010

Я создаю программу конвертации единиц, которая использует библиотеку MathFP. Обычно перевод единиц происходит по формуле:

U1 (единица 1) * K (постоянная) = U2 (единица2)

Я хочу быть в состоянии обнаружить, когда int переполнен / переполнен? Как я могу определить, когда это произошло, и изящно справиться с проблемой. В идеале я бы искал универсальное решение, так как я хотел бы справиться с переполнением примитивами типа long:

Единственная идея, которая у меня есть:

int largeOne = bigNum;
int largeTwo = anotherbigNum;

//complete math operation
long l = largeOne * largeTwo;
if(l > Integer.MAX_SIZE){
    System.out.println("Overflow");
    //handle error
}

Должен ли я использовать другой примитивный тип данных для этих преобразований, например double?

Заранее спасибо за помощь

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Вы можете проверить, является ли результат отрицательным или положительным (в зависимости от признаков largeOne и largeTwo), но это будет работа с предположениями.


Я нашел другой способ,Вы можете вручную умножить два числа с помощью алгоритма.


Ресурсы:

По той же теме:

0 голосов
/ 17 сентября 2010

Вы можете переключиться на использование класса BigDecimal, который имеет намного лучшую обработку для переполнения / недостаточного заполнения, чем примитивы int / long в Java. Значения int / long являются особым случаем, которые не являются классами и в результате упускают преимущества ООП.

...