如何判断一个实数的数量级? ( 积分: 10 )

H

hawii

Unregistered / Unconfirmed
GUEST, unregistred user!
也就是返回一个数科学记数法的指数,
我用frexp,可是返回的好像不是以10为底的。
还有别的函数吗?或者别的方法?
不要告诉我用format返回字符串再分析阿!
会的人这个问题应该很简单吧。没分了,10吧。
 
C

creation-zy

Unregistered / Unconfirmed
GUEST, unregistred user!
有现成函数的啊: function Log10(const X: Extended): Extended;
另外即便不是以10为底,只要除以 frexp(10) 即可啊,因为 Ln(X)/Ln(10) = Log10(X)
 
H

hawii

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,忘了这茬了。再问一下,frexp函数到底做什么?是以e为底分解实数吗?
答了就给你分阿。
 
C

creation-zy

Unregistered / Unconfirmed
GUEST, unregistred user!
frexp(将浮点型数分为底数与指数)
相关函数 ldexp,modf

表头文件 #include<math.h>

定义函数 do
uble frexp(do
uble x, int *exp);

函数说明 frexp()用来将参数x 的浮点型数切割成底数和指数。底数部分直接返回,指数部分则借参数exp 指针返回,将返回值乘以2 的exp次方即为x的值。

返回值 返回参数x的底数部分,指数部分则存于exp指针所指的地址。

附加说明 使用GCC编译时请加入-lm。

范例 #include <math.h>
main()
{
int exp;
double fraction;
fraction = frexp (1024,&amp;exp);
printf("exp = %d/n",exp);
printf("fraction = %f/n", fraction);
}

执行 exp = 11
fraction = 0.500000 /* 0.5*(2^11)=1024*/
 
X

xpricher

Unregistered / Unconfirmed
GUEST, unregistred user!
直接取常用对数就好了。log10。
难道有什么困难吗?
 
H

hawii

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢creation-zy,这么认真的态度,赶快给分!
 

Similar threads

S
回复
0
查看
931
SUNSTONE的Delphi笔记
S
S
回复
0
查看
754
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
950
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部