C语言中表示的浮点数位超长的问题,整数和小数共有有近30位科学技术法对于非常大或者非常小的数据,我们通常用科学记数法来表示.例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的
C语言中表示的浮点数位超长的问题,整数和小数共有有近30位科学技术法对于非常大或者非常小的数据,我们通常用科学记数法来表示.例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的
C语言中表示的浮点数位超长的问题,整数和小数共有有近30位
科学技术法
对于非常大或者非常小的数据,我们通常用科学记数法来表示.例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的科学记数法表示为:2.3E6),或者 9.18×10-5 (科学记树法表示:9.18E-5)这种类型的数据.
输入:
用科学记数法表示的数据.即为符合C语言表示的科学记数法表示.
输出:
该数据的双精度表示
说明:
输入数据的精度不高于小数点后50位.
输入数据时,在实数和幂之间有空格进行分隔,空格个数不定.
结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理.
其中有一个输入是这样的
2.23456789123456789123456789 e 20
结果为
223456789123456789123.45678900
这是我的代码
// 科学计数法.cpp :Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
#include "math.h"
#define N 100
int main(int argc,char* argv[])
{ int i,k,n,math[N]={0},flag=0;
char ch[N],t;
long double j=0,sum=0;
float sum1[15]={0},sum2[15]={0};
gets(ch);
for(i=0;ch[i]!=32;i++)
{ math[i]=ch[i]-48;
flag++;}
sum=math[0];
for(i=2;i<=flag;i++)
sum+=math[i]*pow(10,1-i);
k=ch[strlen(ch)-1]-48;
if(ch[strlen(ch)-2]=='-') k=-k;
j=sum*pow(10,k);
printf("%.8lf\n",j);
return 0;
}
C语言菜鸟 求如何输出这么长的数 求加注释
C语言中表示的浮点数位超长的问题,整数和小数共有有近30位科学技术法对于非常大或者非常小的数据,我们通常用科学记数法来表示.例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的
呵呵,我只给个思路.
这个完全不是数学题,是个字符串的题.
找到输入数据中小数点的位置,和幂的数值,将小数点往后移动幂指定的位数,如果已经移动到输入串的尾部加0补充.
输出当然也只能按字符串格式输出.
计算机没有这么高的精度的!