我给了一个decimal_string,例如12.34,我如何得到小数点前后的值?
a = 12
b = 34
如何获取a
和b
的值?
答案 0 :(得分:4)
编辑:阅读评论"这似乎有效,但如果decimal_string是例如0或1234它什么都没有,我需要它为0.我怎么做?",我提交以下内容:
在下面的代码中,我们将字符串转换为小数,然后:
a
b
。我们使用模%
运算符来得到除1
之后的余数,然后简单地去掉
0.
从头开始,最后将其转换回int
。以下是代码:
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)
使用split
和join
,然后输入强制转换为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()将在没有舍入的情况下切断小数点。 至于小数点,将数字转换为字符串 - 这使您可以像数组一样操作它。抓取尾随数字并将其转换回整数。
....
那就是说,其他答案更酷,更好,所以你应该和他们一起去