您的位置:程序门 -> vb -> 基础类



请帮帮忙吧,vb的幂函数问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请帮帮忙吧,vb的幂函数问题[已结贴,结贴人:sundae81]
发表于:2007-10-09 09:59:28 楼主
向大家请教个问题:
vb中   求负数的幂为什么会出错呢
如x=(-27)^(1/3),结果应该是-3,可为什么说是无效值呢,如果是+27就可以计算
发表于:2007-10-09 10:34:221楼 得分:0
语法

result   =   number^exponent

只有当   exponent   为整数值时,number   才可以为负数。
发表于:2007-10-09 10:37:012楼 得分:0
哦,那么我要计算-27开3次方根,应该怎么写呢,在excel里写成(-27)^(1/3),结果就是-3,
在vb里应该怎么表示呢?
发表于:2007-10-09 10:46:233楼 得分:0
try:

x=-27^(1/3),
发表于:2007-10-09 11:01:374楼 得分:0
不是的,负号是不能提出来的,因为这里-27和1/3都是变量
发表于:2007-10-09 11:09:225楼 得分:5
语法做了限定,我想只能变通一下吧?
变量用abs取绝对值,幂计算后乘-1,不会影响结果吧?

发表于:2007-10-09 11:10:366楼 得分:0
老了,数学上的概念都忘光了,呵呵
发表于:2007-10-09 11:12:107楼 得分:15
dim   num   as   double,   exp   as   double,   result   as   double
num   =   -27
exp   =   -3
if   num   <   0   and   exp   <>   clng(exp)   then
    result   =   sgn(num)   *   (abs(num)   ^   exp)
elseif   num   >   0   then
    result   =   abs(num)   ^   exp
elseif   exp   =   clng(exp)   then
    result   =   (abs(num)   ^   exp)   *   (sgn(num)   ^   (exp   mod   2))
end   if
print   result
发表于:2007-10-09 11:13:268楼 得分:0
上面代码中   num   exp   可以取任意值
发表于:2007-10-09 11:31:469楼 得分:0
非常感谢大家!
发表于:2007-10-10 11:16:3710楼 得分:0
回7楼,增加判断

否则试试(-81)^(1/4)
发表于:2007-10-10 13:29:0411楼 得分:0
确实好大一个漏洞
(-81)^(1/4)   好像没有实数解
原式可以分解为   num^(ex/ey)
当(num <0)   and   (ex   mod   ey   <> 0)   and   (ey   mod   2=0)   就提示没有实数解
不知道我这样理解对不对



快速检索

最新资讯
热门点击