获取十进制值

时间:2018-03-18 04:54:48

标签: python string

我给了一个decimal_string,例如12.34,我如何得到小数点前后的值?

a = 12
b = 34

如何获取ab的值?

3 个答案:

答案 0 :(得分:4)

编辑:阅读评论"这似乎有效,但如果decimal_string是例如0或1234它什么都没有,我需要它为0.我怎么做?",我提交以下内容:

在下面的代码中,我们将字符串转换为小数,然后:

  1. 它的整数分量为a
  2. 整数组件后面的数字为b。我们使用模%运算符来得到除1之后的余数,然后简单地去掉 0.从头开始,最后将其转换回int
  3. 以下是代码:

    import decimal
    
    try:
       num = decimal.Decimal("12.34")
       a = int(num)
       b = int(str(num % 1)[2:])
    except decimal.InvalidOperation:
       a = None
       b = None
    

    原文: Python字符串对象有一个分区方法:

    a,_,b = "12.34".partition('.')
    

    注意_只是一个容纳分区的变量,但并不是真正用于任何事情的。它可以是任何东西,例如z

    这里需要注意的另一件事是Tuple Unpacking ...分区方法返回一个len()为3的元组.Python会将三个值分配给左边各自的3个变量。

    或者,你可以这样做:

    val = "12.34".partition('.')
    val[0] # is the left side - 12
    val[2] # is the right side - 34
    

答案 1 :(得分:2)

使用splitjoin,然后输入强制转换为int

s = '12.34'
a = int(''.join(s.split('.')[0])) # 12
b = int(''.join(s.split('.')[1])) # 34

处理特殊情况(非十进制字符串):

s = '1234'

if s.find('.') != -1:
    a = int(''.join(s.split('.')[0])) 
    b = int(''.join(s.split('.')[1])) 
else:
    a = int(s)
    b = 0

print(a, b)  # 1234 0

答案 2 :(得分:-1)

快速而肮脏的解决方案,无需进入模数。

a = int(12.34)
b = int(str(12.34)[3:])

int()将在没有舍入的情况下切断小数点。 至于小数点,将数字转换为字符串 - 这使您可以像数组一样操作它。抓取尾随数字并将其转换回整数。

....

那就是说,其他答案更酷,更好,所以你应该和他们一起去