山科 STUST OJ Problem B: 编写函数:String to Double (II) (Append Code)

本文介绍了一个将字符串转换为浮点数的C语言实现方法,重点讲解了如何处理正负号、整数部分和小数部分,并给出了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题没啥别的毛病,我的错误在于看不懂题。

另外还有一点是注意浮点数存在-0

 1 #include <stdio.h>
 2 #include <ctype.h>
 3 #include <math.h>
 4 #define MAX_STR_LEN 10 + 5
 5 double strToDouble(char str[]){
 6     int state=0;
 7     double sum1 = 0.0;
 8     double sum2 = 0.0;
 9     int k=1;
10     int digited=0;
11     int fuhao=1;
12     if(!str[0])return 0;
13     for(int i=0;str[i];i++){
14         if(digited==0&&str[i]=='-')
15         {
16             digited=1;
17             fuhao = -1;
18         }
19         if(digited==0&&str[i]=='+'){
20             digited=1;
21             fuhao = 1;      
22         }
23         if(isdigit(str[i])){
24             digited=1;
25             if(!state)sum1=10*sum1 +str[i]-'0';
26             else sum2+=(pow(0.1,k++))*(str[i]-'0');
27         }
28         else if(str[i]=='.'){
29             digited=1;
30             state=1;
31         }
32     }
33     return fuhao*(sum1 + sum2);
34 }
35  
36 int main()
37 {
38     char s[MAX_STR_LEN];
39     while(gets(s) != NULL)
40         printf("%lg\n", strToDouble(s));
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/Wade-/p/6189175.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值