lyxleo
2019-07-07 23:43
采纳率: 28.6%
浏览 734

字符串能不能转换成浮点数?

我最近在学习超高精度数字的加减法(比如精确到小数点后100位),于是我写了一个函数来计算,代码如下。如有其它缺陷,请各位大神帮忙指出。

import math
def DoublePlus(*pluser):
    #检测传入的加数是不是小数
    pluser=list(pluser)
    m=0
    for i in pluser:
        pluser[m]=str(i)
        m=m+1
    print(pluser)
    m=0
    for i in pluser:
        m=m+1
        print(i.find('.'))
        if not (i.find('.')==-1):
            pass
        else:
            raise ValueError ("在第"+str(m)+"个加数中不是小数")
    #通过竖式的方式进行加法运算
    #共进行pluser的长度-1次循环
    for index in range(len(pluser)-1):
        x=pluser[index]#加数1
        y=pluser[index+1]#加数2
        print(math.floor(int(x)))
        x_integer_part=math.floor(int(x))#加数1的整数部分
        y_integer_part=math.floor(int(y))#加数2的整数部分
        #取x和y的小数部分
        x_point=x.find('.')
        x_decimal_part=int('0'+x[x_point::])
        y_point=y.find('.')
        x_decimal_part=int('0'+y[y_point::])
        #开始计算(小数部分 )
        #位数少的补0
        if len(x_decimal_part)>len(y_decimal_part):
            poor=x_decimal_part-y_decimal_part
            y_decimal_part=y_decimal_part+'0'*poor
        elif len(y_decimal_part)>len(x_decimal_part):
            poor=y_decimal_part-x_decimal_part
            x_decimal_part=x_decimal_part+'0'*poor
        else:
            pass
        #倒序
        x_decimal_part=x_decimal_part[::-1]
        y_decimal_part=y_decimal_part[::-1]
        #初始没有进位
        carry=False

if __name__=='__main__':
    DoublePlus(15.685,2.1,3.1,4.1)

但是print(math.floor(int(x)))
这一行老是报错,说:ValueError: invalid literal for int() with base 10: '15.685',虽然能看懂,但不知道如何解决,Python2的string库在3中已经无法使用了,实在不知道如何解决,求各位大神帮忙解决,感谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 吃鸡王者 2019-07-08 09:47
    已采纳

    直接float(x) 就可以了,你float(int(x)) 是什么意思??

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题