满月宴条幅:C/C++实现高精度浮点数的乘方运算

来源:百度文库 编辑:高考问答 时间:2024/03/29 17:10:56
底数在0.0到99.999之间,指数不大于25。
结果要求完全。

Sample Input

95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12

Sample Output

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

Win2000,Dev-C++
先谢了。
求R的n次幂
0.0<=R<=99.999
0<=n<=25

对精度有特别要求的话,c与c++中的数据类型不满足条件,需要自己写一个实现方法与实现数据结构。我写了一个大数运算库,只要考虑小数点位数就能实现高精度的运算(楼上的同志似乎没有理解题目,double的精度有限,如果小数点后位数过多,就会造成舍入误差)

以下完整代码
#include "stdio.h"
#include "math.h"
main(){
double R, n;
scanf("%f, %f", R,n); /*输入参数*/
if(R<0.0 || R>99.999) return;
if(n<0.0 || n>25) return;
printf("result: %f",pow(R,n));/*输出值*/
}

...........
如果在VC下可用
#include <math.h>
#include <stdio.h>

void main( void )
{
double x = 2.0, y = 3.0, z;

z = pow( x, y );
printf( "%.1f to the power of %.1f is %.1f\n", x, y, z );
}
哇哈哈哈我在MSDN,Ctrl C的,如果对参数限定可以在调用pow之前加入 if( x>99||x<0||n<0||n>25 ) exit;

哦对啊没仔细看,这个问题不好解决
期待正解

要有耐心啊

你问的是什么呢》

你是不是想自己写程序实现pow()函数的功能啊?