日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

字符串函数---atof()函数具体解释及实现(完整版)

發布時間:2023/12/4 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 字符串函数---atof()函数具体解释及实现(完整版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

atof()函數

atof():double atof(const char *str );

功 能: 把字符串轉換成浮點數

str:要轉換的字符串。

返回值:每一個函數返回 double 值。此值由將輸入字符作為數字解析而生成。 假設該輸入無法轉換為該類型的值,則返回值為 0.0。

函數說明 :atof()會掃描參數nptr字符串,跳過前面的空格字符。直到遇上數字或正負符號才開始做轉換。而再遇到非數字或字符串結束時('')才結束轉換,并將結果返回,str字符串可包括正負號、小數點或E(e)來表示指數部分。

#include<iostream>

using namespace std;

double atof_my(const char *str)
{
	double s=0.0;

	double d=10.0;
	int jishu=0;

	bool falg=false;

	while(*str==' ')
	{
		str++;
	}

	if(*str=='-')//記錄數字正負
	{
		falg=true;
		str++;
	}

	if(!(*str>='0'&&*str<='9'))//假設一開始非數字則退出。返回0.0
		return s;

	while(*str>='0'&&*str<='9'&&*str!='.')//計算小數點前整數部分
	{
		s=s*10.0+*str-'0';
		str++;
	}

	if(*str=='.')//以后為小樹部分
		str++;

	while(*str>='0'&&*str<='9')//計算小數部分
	{
		s=s+(*str-'0')/d;
		d*=10.0;
		str++;
	}

	if(*str=='e'||*str=='E')//考慮科學計數法
	{
		str++;
		if(*str=='+')
		{
			str++;
			while(*str>='0'&&*str<='9')
			{
				jishu=jishu*10+*str-'0';
				str++;
			}
			while(jishu>0)
			{
				s*=10;
				jishu--;
			}
		}
		if(*str=='-')
		{
			str++;
			while(*str>='0'&&*str<='9')
			{
				jishu=jishu*10+*str-'0';
				str++;
			}
			while(jishu>0)
			{
				s/=10;
				jishu--;
			}
		}
	}

    return s*(falg?-1.0:1.0);
}

int main()
{
	char *s1="  123.456567567e-10";
	char *a1="  123.456567567e-10";
	
	char *s2="1234567.235e+10";
	char *a2="1234567.235e+10";

	char *s3="  123.456567567e-10";
	char *a3="  123.456567567e-10";

	double sum_1=atof_my(s1);
	double sum1=atof(a1);

	double sum_2=atof_my(s2);
	double sum2=atof(a2);

	double sum_3=atof_my(s3);//遇到''結束
	double sum3=atof(a3);
	
	cout<<"atof_my:"<<sum_1<<endl;
	cout<<"atof   :"<<sum1<<endl;

	cout<<"atof_my:"<<sum_2<<endl;
	cout<<"atof   :"<<sum2<<endl;

	cout<<"atof_my:"<<sum_3<<endl;
	cout<<"atof   :"<<sum3<<endl;
	
	system("pause");
	return 0;
}

執行結果比較圖:

總結

以上是生活随笔為你收集整理的字符串函数---atof()函数具体解释及实现(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。