不用 if,用一句代码分别求两个数的最小值、最大值

作者:vkvi 来源:ITPOW(原创) 日期:2011-5-15

在 SQL Server 中的 min、max 表示选取的记录中对应列中各记录的最小值、最大值,但要在不使用 if 的情况下判断两个数的最小值、最大值,怎么办呢?

原理

  • 中数,中数是最小值与最大值中间的那个数,中数到最小值与最大值的距离相同。
  • 最小值与最大值之差的绝对值,再除以 2,就得到中数到最小值与最大值的距离。
  • 中数减去距离,得最小值;中数加上距离,得最大值。

代码(为了便于描述,使用的是 JavaScript 代码)

不论 a、b 是正数还是负数,还是一个正数一个负数,还是一个负数一个正数,还是相同的值,都能够正确判断出最小值与最大值。

但是某些语言中,若 a、b 是小数,则在进行除运算时会将小数对待为浮点类型,而浮点类型是不精确的,与实际值会有一丁点的误差,这个就根据不同的语言不同处理了。

相关文章