当前位置:首页 » 编程语言 » c语言科学计数法转化为浮点数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言科学计数法转化为浮点数

发布时间: 2022-08-08 14:51:00

c语言,输出科学计数法

#include<stdio.h>
#include<string.h>

charnum[110];
charresult[110];
intlen;

intmain()
{
inti,j;
ints1,s2;//小数点位置,字符串首个非零数位置
intfind1=0;
intfind2=0;//find1:是否找到小数点位置标志位,find2:是否找到首个非零数位置,0:表示未找到
intindex;

scanf("%s",num);
len=strlen(num);//读取字符串长度

for(i=0;i<len;++i)//寻找原字符串中小数点与首个非零数的位置
{
if(find1&&find2)
break;

if(num[i]=='.'){
s1=i;
find1=1;
}
elseif(num[i]!='0'&&!find2){
find2=1;
s2=i;
}
}

if(s1-s2>0)//根据二个位置确定指数大小
index=s1-s2-1;
elseif(s2>s1)
index=s1-s2;

j=0;
for(i=s2;i<len;++i)//确定底数
{
if(num[i]=='.')
continue;
elseif(i==s2){//确定底数小数点位置

if(num[i+1]){
result[j++]=num[i];
result[j++]='.';
}
else
result[j++]=num[i];
}
else
result[j++]=num[i];
}
result[j]='';

printf("%se%d ",result,index);
return0;
}

❷ C语言 字符串转换浮点 小数点后9位

可以使用库函数atof。
1、函数名 :atof
2、声明 :double atof(const char *nptr);
3、头文件: #include <stdlib.h>
4、功能:将参数nptr中的字符串转为浮点型数据并返回。
5、需要注意的是,必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。 比如"sjdhk"这样的字符串是无法转换为浮点数的。而如果是"1.23sdf"这样的形式,只会处理到最后一个数字,结果为1.23。
6、示例代码:

#include<stdlib.h>
intmain()
{
char*a="-100.23";//实数形式存储的字符串
char*b="200e-2";//科学计数法形式存储的字符串
doublec;
c=atof(a)+atof(b);//转换后为-100.23+200e-2=-100.23+2=-98.23
printf(“c=%.2lf ”,c);//输出结果,保留2位小数。期望结果为c=-98.23
return0;
}

输出结果
c=-98.23
与期望结果相同。

❸ C++编程把科学计数法化为浮点数输出

float format
fixed: write floating point values in fixed-point notation.
scientific: write floating-point values in scientific notation.

写法就是:
float a = 0.0001f;
std::cout.setf(std::ios::fixed, std::ios::floatfield);
std::cout << a << std::endl;

❹ 帮我写一个将字符串数字转换成浮点型的C语言程序,谢谢

我没写保护
你要是输入错了
程序就杯具了

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include <string.h>

void getline (char s_h[], char s_e[],char s_c[])
{
int flag=0;
int i=0,j=0,k=0;
while(s_c[k] != '\0')
{
if((s_c[k] !='e' && s_c[k] !='E') && flag==0)
{
s_h[i++]=s_c[k++];
}
if(s_c[k] =='e' || s_c[k] =='E')
{
flag=1;
s_h[i]='\0';
k++;
continue;
}
if(flag==1)
s_e[j++]=s_c[k++];
}
if(strstr(s_c, "E") == NULL || strstr(s_c, "e") == NULL)
s_h[i]='\0';
s_e[j]='\0';
}

/*** change string to double ***/
double getval(char s[])
{
double val=0.0;
double power=1.0;
double flag;
int i=0;
while(s[i])
{
flag = (s[0] == '-') ? -1.0:1.0;
if (s[i] == '-' || s[i] == '+')
i++;
if (s[i] == '.')
{
power*=10.0;
i++;
}
val=10.0*val+(s[i++]-'0');
}
return flag*val/power;
}

/*** change science mode string to double ****/
double atof(char s_c[])
{
char s_h[255];
char s_e[255];
double sum_h;
double sum_e;
double val;

getline(s_h,s_e,s_c);
sum_h=getval(s_h);
sum_e=getval(s_e);
val=sum_h*pow(10,sum_e);
return val;
}

int main()
{
double val;
char c[255];

printf("enter a string of science_mode:\n");
gets(c);
val=atof(c);
printf("\nval=%lf\n",val);
return 0;
}

❺ c语言怎么让输出值是小数

利用C语言使输出值为小数的编程方法和思想如下:

1.首先需要定义一个变量作为后续需要输出的数。这里以定义一个变量a为例。需要注意的是,整型int是不支持转化的。

❻ C语言十六进制浮点数科学计数法

你的数应该这样写的 0xa.1f 10p
a是10
.1f表示1/16加上15/256
p10表示2的10次方(即1024)
即 0xa.1f 10p =10+ 1*(16的-1次方)+ 15*(16的-2次方) ×(2的10次方)
类似于十进制数1.23=1+2*10的-1次方+3*10的-2次方

❼ C语言读取文本文件中的科学数据

可以使用两种方法很方便的读取科学计数法文本并转化为浮点数,分别是sscanf和atof。

参考代码是用VC2008实现的,因此分别变形为它们各自的宽字符版本:swscanf和_wtof。

必须要注意的是,使用sscanf读取科学计数法时,必须使用%lf,而不是%f。

CStringstr=_T("1.9626E+0042.6789E+004");

{
doublef1,f2;
swscanf(str,_T("%lf%lf"),&f1,&f2);
TRACE(_T("%f%f "),f1,f2);
}

{
TCHARstr1[1024],str2[1024];
swscanf(str,_T("%s%s"),str1,str2);

doublef1=_wtof(str1);
doublef2=_wtof(str2);
TRACE(_T("%f%f "),f1,f2);
}

❽ 怎么把科学计数法字符串转换成浮点类型

可以使用库函数atof。

1 函数名 atof
2 声明
double atof(const char *nptr);
3 头文件
#include <stdlib.h>
4 功能
将参数nptr中的字符串转为浮点型数据并返回。
5 需要注意的是,必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。 比如"sjdhk"这样的字符串是无法转换为浮点数的。而如果是"1.23sdf"这样的形式,只会处理到最后一个数字,结果为1.23。
5 示例代码
#include<stdlib.h>
int main()
{
char*a="-100.23";//实数形式存储的字符串
char*b="200e-2";//科学计数法形式存储的字符串
double c;
c=atof(a)+atof(b);//转换后为 -100.23+200e-2=-100.23+2=-98.23
printf(“c=%.2lf\n”,c);//输出结果,保留2位小数。期望结果为c=-98.23
return 0;
}