我正在objective-c中构建一个十六进制计算器。我的问题是处理相乘时会溢出的 long long 值。
当我在添加之前添加值时,我会通过执行类似的操作来检查值是否会溢出。
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 {
}
作为一个附带问题,我需要对部门进行类似的检查吗?