在乘除法混合运算中,要先除后乘,避免先做乘法导致溢出。
比如,运算postion在max和min之间的百分比位置(三个数值均为整数型):
Result := 100 * (nPosition - nMin) div (nMax - nMin)
这种写法,如果nMax和nPosition都是比较大的数值时(假设nMin为0),先运算乘法就可能导致超出最大整数范围(MaxInt),使得最终结果变成负数。
只要调整为:
Result := Trunc((nPosition - nMin) / (nMax - nMin) * 100)
就可以避免。
|