精华内容
下载资源
问答
  • 题目要求:利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456 我的思路: (1)找出小数点位置 (2)小数点前直接int,后面int后做运算,xxx/10^n,n为后面数字个数 (3)然后前后...

    致敬廖雪峰老师!!!

    题目要求:利用mapreduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456

    我的思路:

    (1)找出小数点位置

    (2)小数点前直接int,后面int后做运算,xxx/10^n,n为后面数字个数

    (3)然后前后相加

    这是我最先想到的思路

    代码如下

    def Str2Float(s):
        #Find Positon of '.'
        Num = s.index('.')
        #取小数点前面
        FrontStr = s[:Num]
        #取小数点后面
        BehindStr = s[Num - len(s) + 1:]
        #做运算
        FrontNum = int(FrontStr)
        BehindNum = int(BehindStr) / 10**len(BehindStr)
        Number = FrontNum + BehindNum
        return Number
    print(Str2Float('123.456'))
    View Code

    但是题目要求利用map和reduce吖,所以还是以上思路,改装如下:

    from functools import reduce
    
    #excise1:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,
    #其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:
    def Normalize(name):
        return name.title()
    
    # 测试:
    L1 = ['adam', 'LISA', 'barT']
    L2 = list(map(Normalize, L1))
    print(L2)
    
    #excise2:Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
    
    def prod(L):
        def Product(x,y):return x * y
        return reduce(Product,L)
    
    #测试
    print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
    if prod([3, 5, 7, 9]) == 945:
        print('测试成功!')
    else:
        print('测试失败!')
    
    #excise3:利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456
    #我的思路:
    # 1.找小数点的位置,然后把前后两部分数字各截取出来
    # 2.前面直接int,后面做运算:xxx/10^n,n代表后面数字个数
    # 3.前后相加,打印
    #思路缺点:没有使用到map和reduce函数,代码量大,
    # def Str2Float(s):
    #     #Find Positon of .
    #     Num = s.index('.')
    #     FrontStr = s[:Num]
    #     BehindStr = s[Num - len(s) + 1:]
    #     FrontNum = int(FrontStr)
    #     BehindNum = int(BehindStr) / 10**len(BehindStr)
    #     Number = FrontNum + BehindNum
    #     return Number
    # print(Str2Float('123.456'))
    
    # 使用map和reduce的思路
    # 与上面思路相仿
    # 找出点的位置前后截取
    # str --> int
    # 做运算
    
    
    Digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    def Str2Float(s):
        #找 . 的位置并前后截取
        PointPosition = s.index('.')
        FrontStr = s[:PointPosition]
        BehindStr = s[PointPosition - len(s) + 1:]   
        Front = Str2Int(FrontStr)
        Behind = Str2Int(BehindStr) / 10**len(BehindStr)
        return Front + Behind
    
    #定义转换为整数的函数
    def Str2Int(s):
        def fn(x, y):
            return x * 10 + y
        def Char2Num(s):
            return Digits[s]
        return reduce(fn, map(Char2Num, s))
    
    
    #测试
    print('Str2Float(\'1433223.456\') =', Str2Float('1433223.456'))
    if abs(Str2Float('123.456') - 123.456) < 0.00001:
        print('测试成功!')
    else:
        print('测试失败!')
    View Code

    前面excise1和2是前面两练习的解答,我再看看别的大佬的代码理解下,再跟上

    转载于:https://www.cnblogs.com/zhangzemin/p/10946093.html

    展开全文
  • from functools import reducedef str2float(s): return reduce(lambda x,y:x+int2dec(y),map(str2int,s.split('.'))) #map + reduce def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6
    from functools import reduce
    
    def str2float(s):
        return reduce(lambda x,y:x+int2dec(y),map(str2int,s.split('.')))   #map + reduce
    def char2num(s):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
    def str2int(s):
        return reduce(lambda x,y:x*10+y,map(char2num,s))
    def intLen(i):
        return len('%d'%i)
    def int2dec(i):
        return float(i)/(10**intLen(i))
    
    print(str2float('123.456'))
    展开全文
  • 第一次尝试: Players_data['2017_Win'] = Players_data['2017_Win'].str.replace('%','',regex=False) ...想请教一下:为什么''内没有任何内容也没有空格为什么还是不能由字符串转为浮点数?? 感谢!
  •  这次主要是一个整数int转为各种进制字符串以及浮点数double转为字符串的操作。当然,前提条件是不可使用库函数sprintf,由于嵌入式开发环境,调用库后可能编译后的可执行文件过大,这里就是自己封装的一个简单转换...

    概述:

        这次主要是一个整数int转为各种进制字符串以及浮点数double转为字符串的操作。当然,前提条件是不可使用库函数sprintf,由于嵌入式开发环境,调用库后可能编译后的可执行文件过大,这里就是自己封装的一个简单转换的函数。留作笔记,以后也可直接使用,不用再找,麻烦。

    Demo:

        废话不多说,直接上源码,不过对于浮点数转换那里,由于精度问题,如果输入的浮点数精度超过我们的最大允许的精度,就可能会出现问题。如果你有更好的办法,希望也可以告知一二。(运行环境:Ubuntu14.04 64)

    #include <stdio.h>
    
    /*
      功能:将int型数据转为2,8,10,16进制字符串
      参数:value --- 输入的int整型数
            str --- 存储转换的字符串
            radix --- 进制类型选择
    */
    char *sky_itoa(int value, char *str, unsigned int radix)
    {
      char list[] = "0123456789ABCDEF";
      unsigned int tmp_value;
      int i = 0, j, k = 0;
      if (NULL == str) {
        return NULL;
      }
      if (2 != radix && 8 != radix && 10 != radix && 16 != radix) {
        return NULL;
      }
      if (radix == 10 && value < 0) {
        //十进制且为负数
        tmp_value = (unsigned int)(0 - value);
        str[i++] = '-';
        k = 1;
      } else {
        tmp_value = (unsigned int)value;
      }
      //数据转换为字符串,逆序存储
      do {
        str[i ++] = list[tmp_value%radix];
        tmp_value /= radix;
      } while(tmp_value);
      str[i] = '\0';
      //将逆序字符串转换为正序
      char tmp;
      for (j = k; j < (i+k)/2; j++) {
        tmp = str[j];
        str[j] = str[i-j-1+k];
        str[i-j-1+k] = tmp;
      }
      return str;
    }
    
    /*
      功能:将double型数据转为字符串
      参数:value --- 输入的double浮点数
            str --- 存储转换的字符串
            eps --- 保留小数位选择,至少保留一个小数位,至多保留8个小数位
    */
    void sky_ftoa(double value, char *str, unsigned int eps)
    {
      unsigned int integer;
      double decimal;
      char list[] = "0123456789";
      int i = 0, j, k = 0;
      //将整数及小数部分提取出来
      if (value < 0) {
        decimal = (double)(((int)value) - value);
        integer = (unsigned int)(0 - value);
        str[i ++] = '-';
        k = 1;
      } else {
        integer = (unsigned int)(value);
        decimal = (double)(value - integer);
      }
      //整数部分数据转换为字符串,逆序存储
      do {
        str[i ++] = list[integer%10];
        integer /= 10;
      } while(integer);
      str[i] = '\0';
      //将逆序字符串转换为正序
      char tmp;
      for (j = k; j < (i+k)/2; j++) {
        tmp = str[j];
        str[j] = str[i-j-1+k];
        str[i-j-1+k] = tmp;
      }
      //处理小数部分
      if (eps < 1 || eps > 8) {
        eps = 6;
      }
      /*精度问题,防止输入1.2输出1.19等情况*/
      double pp = 0.1;
      for (j = 0; j <= eps; j++) {
        pp *= 0.1;
      }
      decimal += pp;
      /*小数转换为整数*/
      while (eps) {
        decimal *= 10;
        eps --;
      }
      int tmp_decimal = (int)decimal;
      str[i ++] = '.';
      k = i;
      //小数转换为整数的数据转换为字符串,逆序存储
      do {
        str[i ++] = list[tmp_decimal%10];
        tmp_decimal /= 10;
      } while(tmp_decimal);
      str[i] = '\0';
      //将逆序字符串转换为正序
      for (j = k; j < (i+k)/2; j++) {
        tmp = str[j];
        str[j] = str[i-j-1+k];
        str[i-j-1+k] = tmp;
      }
    }
    
    int main()
    {
      char str[36] = {0};
      //int转换为十进制字符串
      sky_itoa(123456, str, 10);
      printf("str = %s\r\n", str);
      sky_itoa(-123456, str, 10);
      printf("str = %s\r\n", str);
      //int转换为十六进制及二进制字符串
      sky_itoa(12, str, 16);
      printf("str = %s\r\n", str);
      sky_itoa(12, str, 2);
      printf("str = %s\r\n", str);
      sky_itoa(-12, str, 16);
      printf("str = %s\r\n", str);
      sky_itoa(-12, str, 2);
      //浮点数转字符串
      printf("str = %s\r\n", str);
      sky_ftoa(-121.2345678, str, 6);
      printf("str = %s\r\n", str);
      sky_ftoa(121.2345678, str, 6);
      printf("str = %s\r\n", str);
      return 0;
    }
    

    运行结果:

    展开全文
  • * 字符串转为整数或浮点数 * by AutuanLiu */// 使用库函数#include #include using std::cin; using std::cout; using std::endl;int main(int argc, char const *argv[]) { char _int[30]; char _
    /*
    * 字符串转为整数或浮点数
    *  by AutuanLiu
    */
    
    // 使用库函数
    
    #include <iostream>
    #include <cstdlib>
    using std::cin;
    using std::cout;
    using std::endl;
    
    int main(int argc, char const *argv[])
    {
        char _int[30];
        char _float[30];
        while (cin >> _int >> _float)
        {
            int i = atoi(_int);
            float f = atof(_float);
            cout << _int << " to int : " << i << endl;
            cout << _float << " to float : " << f << endl;
        }
        return 0;
    }
    
    //不使用库函数实现
    
    #include <iostream>
    using std::cin;
    using std::cout;
    using std::endl;
    
    str2int(const char *str)
    {
        int temp = 0;
        const char *ptr = str;
        if (*str == '-' || *str == '+')
        {
            str++;
        }
        while (*str != '\0')
        {
            if ((*str < '0') || (*str > '9'))
            {
                break;
            }
            temp = temp * 10 + (*str - '0');
            str++;
        }
        if (*ptr == '-')
        {
            temp = -temp;
        }
        return temp;
    }
    
    int main(int argc, char const *argv[])
    {
        int n = 0;
        char p[15] = "";
        cin.getline(p,20);
        n = str2int(p);
        cout << p << " to int type: " << n << endl;
        return 0;
    }

    源码下载

    展开全文
  • double str2double(char* s) { int i; double dec = 0; unsigned int flag_dot = 0; unsigned int mid = 1; unsigned int ret = 0; unsigned int sign = 0; if (!s) { return 0.0;... i =.
  • 字符串转换为小数: float("3") 转换成浮点数,默认保留小数点后1位 字符串转换为十进制整数: int("58") 转换成一个整数 int(str, n) 如 int("0x2d",16), int("2d",16) n进制的字符串转换成十进制整数 十进制...
  • 数字字符串转为相应的浮点数

    千次阅读 2018-01-24 10:00:22
    #include #include double atof(char s[]) { double sum,power; int i,sign; for(i=0;isspace(s[i]);i++); sign=(s[i]=='-')?1:-1; if(s[i]=='+'||s[i]=='-')i++; for(sum=0;isdigit(s[i])
  • 关于16进制字符串转为单精度浮点数和双精度浮点数的运算(一)最近在进行GPIB方面的开发时,传回的数据有这两种格式,1.IEEE 32位浮点数格式;2.IEEE 64位浮点数格式。1.IEEE 32位浮点数格式 这种格式的特点是:每个...
  • Python 字符串 转换 整数 浮点数 数字

    千次阅读 2014-12-01 20:44:31
    使用PyOpengl的时候,调用glVertex2f时,传入两个字符串会报错,所以需要将字符串转为浮点数再传,可以使用下面的方法。 >>> import string >>> string.atoi('34') 34 >>> int('34') 34 >>> string.atof('34') ...
  • 浮点数转为字符型 sprintf(b,"%.2f",x); //精度为0.2,b为浮点数数组 AC代码 /** * 返回一个严格四舍五入保留两位小数的字符串 * @param n int整型 n * @return string字符串 */ char* Probability(int n ) { ...
  • 2.IEEE 64位浮点数格式 这种格式的特点是:每个数由8字节组成,包括1位符号位,11位带符号阶码,52位尾数。 例如:我们收到一个数的格式是 3F F0 6F 80 00 00 00 00,那么它的二进制格式是: 0011 1111 1111 ...
  • python 浮点数字符串转int类型

    千次阅读 2016-12-30 10:49:43
    在用python对文本数据进行处理时,读alfw的人脸检测框,标注的数据是float类型,像 ...倘若直接int转换会报错,可以使用 string 里面的atof 先将字符串转为浮点数,再用int 转换, [int(s.atof(rr)) for rr in line.
  • C++ 将整数、浮点数转为字符串

    千次阅读 2016-08-18 21:30:52
    前言:用 sprintf可以把整数、浮点数转为字符串。1、整数int main(int argc, const char * argv[]) { int n = 12345;//待转整数 char strN[50];//转换后的字符串 sprintf(strN, "%d", n); cout;//输出 return 0; }...
  • js中字符串转为数字主要4种,分别为转换函数,强制转换,js变量弱类型转换,正则表达式。 1、转换函数  JS中提供了两个转换函数parseInt()和parseFloat(),parseInt()将值转换为整数,parseFloat()将值转换为...
  • C++ 如何将浮点数转为字符串,并保留一定小数位数呢?比如有一个数 25.56789,只想保留小数点后两位。sprintf、snprintf 是比较 C 语言的函数,用法也比较简单,不再过多介绍,这里主要介绍一些 C++ 的写法。
  • java中 浮点数转为字符串

    千次阅读 2017-08-12 16:45:58
    float scale = this.getResources().getDisplayMetrics().density; tv_hello.setText(String.valueOf(scale));
  • 数字字符串转为数字 C语言实现 一时兴起,想到的一个操作,数字字符串如何转数组呢???问了一下度娘,没找到满意的回答,笔者琢磨则自己写一个,并且还准备了几份惊喜,话不多说,直接上干货,如下代码: //此函数...
  • 浮点数转为字符串的具体算法在网上少有涉及,一般都采用浮点法,即通过浮点运算确定需要的每一位上的数字。本文介绍的方法是定点法,即对IEEE 745[1]的浮点数编码规范进行硬解码。这种方法效率不高,但是精度确很...
  • Java浮点数字符串转换

    2020-07-30 08:10:00
    * 把浮点数 3.14 转换为 字符串 "3.14" 再把字符串 “3.14” 转换为 浮点数 3.14 如果字符串是 3.1a4,转换为浮点数会得到什么? */ public class TestF { public static void main(String[] args) { //...
  • 十六进制字符串转为IEEE754数据值

    千次阅读 2018-05-17 14:17:37
    1. 背景在解析RTCM3.2差分数据的字段时,由于很多数据值位数不是8bit的倍数,同时,有的表示浮点数,同时通过串口获取的数据一般为十六进制字符串,所以,为了能够获取十六进制字符串表示的浮点数时,需要进行处理2....

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

字符串转为浮点数