ITPub博客

首页 > 数据库 > Oracle > 乘法运算

乘法运算

原创 Oracle 作者:ynque 时间:2007-01-10 11:25:05 0 删除 编辑

a * b * c = power(10, log(10, a) + log(10, b) + log(10, c))

表A:

ID QTY
1 2
2 4
3 6
4 5

select power(10,sum(log(10,qty))) from a;

POWER(10,SUM(LOG(10,QTY)))
--------------------------
240

LOG
LOG函数返回数值的非自然对数。
其具体的语法格式如下:
LOG(logbase,number)
其中:
logbase 除1和0以外的任意数值,是对数的底
number 及对数的真数
下面是该函数的使用情况:
LOG(10,100)=2
LOG(EXP(1),10)=2.3025851=LN(10)
因为102等于100,所以,以10为底时100的对数是2。注意:LOG(e,x)=LN(x).可以使用EXP(1)得到e的值。

POWER
函数POWER返回一个数值的指定次幂。
其具体的语法格式如下:
POWER(number,power)
其中:
number 任意数值
power 幂次数。函数的结果其实即:number幂次。如果第 一个参数为负数,则该幂次数务必是一整数。其它 情况可为任意数值
下面是该函数的使用情况:
POWER(10,2)=100(10*10)
POWER(10,3)=1000
POWER(-10,3)=-1000



[@more@]SQL> select 1 from dual where 240=(select 2*6*4*5 from dual);

1
----------
1

SQL> select 1 from dual where 240=(select power(10,sum(log(10,q))) p from qqq);

未选定行

不过Oracle支持38位的精度,一般情况下做个round应该能消除精度误差

SQL> select 1 from dual where 240=(select round(power(10,sum(log(10,q)))) p from
qqq);

1
----------
1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7796281/viewspace-889308/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 有趣的算法
请登录后发表评论 登录
全部评论

注册时间:2013-06-21

  • 博文量
    6
  • 访问量
    301967