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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言科学计数法字符串转化为实数

發(fā)布時(shí)間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言科学计数法字符串转化为实数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

任務(wù)描述:將科學(xué)計(jì)數(shù)法字符串轉(zhuǎn)化為實(shí)數(shù)

#include<stdio.h>// 將科學(xué)計(jì)數(shù)法字符串轉(zhuǎn)化為實(shí)數(shù) // 如 1.345-e2 為0.01345 // 注意,單個(gè)字符轉(zhuǎn)化為對應(yīng)的數(shù)字不能用(int) char,應(yīng)該用 char - '0' float convert(char *num){printf("開始轉(zhuǎn)換%s\n",num);float num1 = 0.0,num2 = 0.0;int sign = 1;int exp = 1,cishu = 0;//表示e后面是正號還是負(fù)號,正號為1,負(fù)號為-1//cishu表示是幾次飯char *p = num;if(*p == '-'){sign = -1;p++;//如果小數(shù)是復(fù)數(shù)}while(isdigit(*p)){num1 = num1 * 10 + *p - '0';p++;//小數(shù)點(diǎn)前面的部分}printf("num1:%f\n",num1);float i = 0.1;p++;while(isdigit(*p)){num2 += i * (*p- '0');i *= 0.1;p++;}//小數(shù)點(diǎn)后面的部分printf("num2:%f\n",num2);if(*p == 'e' || *p == 'E')p++;if(*p == '-'){exp = -1;p++;}else if(*p == '+')p++;while(*p != '\0') {cishu = cishu*10 + *p - '0';p++;}printf("cishu:%d\n",cishu);float result = sign*(num1+num2);if(exp == -1) i = 0.1;else i = 10;for(int j=0;j<cishu;j++) result*=i;return result;} int main() {char *str = "21.345e2";float result = convert(str);printf("%f",result);return 0; }

總結(jié)

以上是生活随笔為你收集整理的C语言科学计数法字符串转化为实数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。