怎么将字符串"80%"的80提取出来赋值给一个double变量

怎么将字符串"80%"的80提取出来赋值给一个double变量,随便什么语言,讲一下方法
String a = "80%"
double b;

怎么拿到80

#python
a = "80%"
a=a.replace("%","")
b=float(a)

//c#
string a = "80%";
a=a.replace("%","");
b=double.parse(a);

供参考:

#include <stdio.h>
int main()
{
    double b;
    char a[16] = "80%";
    sscanf(a, "%lf", &b);
    printf("%f", b);
    return 0;
}

这其实是一个字符串处理的题目,你要了解如何处理字符串:(字符串切割,字符串转int/double ==>这两个知识点你可以百度方案)
1:你可以从头到尾依次把字符串按每个字符去做判断处理,符合条件取出,不符合则处理 (或者你可以把%替换成字符串终结符\0,然后直接字符串转数字atoi函数了解一下)
2:找到%的位置,还是提取前面正常的数字,然后进行转int/double处理

我简单写了一下demo,你可以参考


int main(void)
{  
    const char* test = "80%"; //说白了就是对字符串的处理  你可以直接每个字符处理啊
    char data[5] = {0};
    int j = 0;
    for (int i = 0; i < strlen(test); i++)
    {
        if (test[i] == '%')
        {
            break;
        }
        if (test[i] >= '0' && test[i] <= '9')
        {
            data[j++] = test[i];
        }
    }
    int b = atoi(data);  //提取正确的字符  用c语言中的atoi atof等把字符数字转为int double
    printf("%d \n", b); //80

    //或者你可以用c语言里面的切割 strstr strtok
    const char* ret;
    ret = strstr(test, "%");    //先找到%的位置  再对字符进行切割 
    printf("ret = %s \n", ret); //%
    //那么 ret - test就是表示数字的长度

    memset(data, 0, 5);
    memcpy(data, test, ret - test); //取前面是数字的字符
    printf("data:%s int = %d \n", data, atoi(data));


    return 0;
}