nc-blog 首页农码生涯

先除后乘

日期: 2006-09-04, 23:56   共 14,158 次阅读

在乘除法混合运算中,要先除后乘,避免先做乘法导致溢出。

比如,运算postion在max和min之间的百分比位置(三个数值均为整数型):

Result := 100 * (nPosition - nMin) div (nMax - nMin)

这种写法,如果nMax和nPosition都是比较大的数值时(假设nMin为0),先运算乘法就可能导致超出最大整数范围(MaxInt),使得最终结果变成负数。
只要调整为:

Result := Trunc((nPosition - nMin) / (nMax - nMin) * 100)

就可以避免。

简短地址:http://ncblog.net/242/
«
»
暂时没有评论

评论已关闭

Trackback url | Rss 2.0