Я создаю шестнадцатеричный калькулятор в Objective-C. Моя проблема связана с длинными значениями, которые будут переполняться при умножении.
Когда я добавляю значения перед добавлением, я проверяю, что значение не будет переполнено, делая что-то вроде этого.
long long leftToAdd = LLONG_MAX - self.runningTotal;
if (self.selectedNumber <= leftToAdd) {
self.runningTotal += self.selectedNumber;
} else {
self.selectedNumber -= leftToAdd;
self.runningTotal = self.selectedNumber-1;
self.overflowHasOccured = YES;
}
если значение будет переполнено, оно берет значение переполнения (без фактического переполнения) и добавляет уведомление о переполнении. Я надеялся найти способ сделать то же самое, но для умножения, может ли кто-нибудь помочь с этим?
вот что у меня есть до сих пор.
// if - value would not overflow //
if (self.runningTotal > 0 && self.selectedNumber > 0
&& LLONG_MAX/self.runningTotal >= self.selectedNumber) {
self.runningTotal *= self.selectedNumber;
// else - handle overflow //
} else {
}
и как побочный вопрос, нужно ли мне делать аналогичную проверку на деление?