當前位置:首頁 » 編程語言 » 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;
}