Python 获取十进制值

Python 获取十进制值,python,string,Python,String,如果给我一个十进制字符串,例如12.34,我如何获得小数点前后的值 a = 12 b = 34 如何获取a和b的值?编辑:在阅读注释“这似乎可行,但如果十进制字符串为0或1234,则不会给出任何值,我需要它为0。我将如何执行此操作?”,我提交以下内容: 在以下代码中,我们将字符串转换为十进制,然后: 它的整数部分是a 整数分量后面的数字是b。我们使用模%运算符得到除以1的余数,然后简单地去除 从开始的0.将其转换回末尾的int 代码如下: import decimal try: num

如果给我一个十进制字符串,例如12.34,我如何获得小数点前后的值

a = 12
b = 34

如何获取
a
b
的值?

编辑:在阅读注释“这似乎可行,但如果十进制字符串为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
    

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

    a,_,b = "12.34".partition('.')
    
    请注意,
    \uu
    只是一个保存分区的变量,但实际上并不用于任何用途。它可以是任何东西,比如
    z

    这里要注意的另一件事是元组解包。。。partition方法返回len()为3的元组。Python将这三个值分别分配给左边的3个变量

    或者,您可以这样做:

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

    编辑:阅读评论“这似乎可行,但如果十进制字符串为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
    

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

    a,_,b = "12.34".partition('.')
    
    请注意,
    \uu
    只是一个保存分区的变量,但实际上并不用于任何用途。它可以是任何东西,比如
    z

    这里要注意的另一件事是元组解包。。。partition方法返回len()为3的元组。Python将这三个值分别分配给左边的3个变量

    或者,您可以这样做:

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

    使用
    split
    join
    ,然后键入cast to
    int

    s = '12.34'
    a = int(''.join(s.split('.')[0])) # 12
    b = int(''.join(s.split('.')[1])) # 34
    
    处理特殊情况(非十进制字符串):


    使用
    split
    join
    ,然后键入cast to
    int

    s = '12.34'
    a = int(''.join(s.split('.')[0])) # 12
    b = int(''.join(s.split('.')[1])) # 34
    
    处理特殊情况(非十进制字符串):


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

    a = int(12.34)
    b = int(str(12.34)[3:])
    
    int()将在不进行四舍五入的情况下截断小数点。 至于小数点,请将数字转换为字符串,这样可以像处理数组一样对其进行操作。抓取尾随数字并将其转换回整数


    也就是说,其他答案更酷、更好,因此您应该使用快速、肮脏的解决方案,而不必使用模

    a = int(12.34)
    b = int(str(12.34)[3:])
    
    int()将在不进行四舍五入的情况下截断小数点。 至于小数点,请将数字转换为字符串,这样可以像处理数组一样对其进行操作。抓取尾随数字并将其转换回整数


    也就是说,其他答案更酷、更好,所以你应该选择它们

    可能重复的可能重复的可能重复的我非常喜欢这个!非常干净:)这给了我一个错误:列表索引超出范围出于某种原因我非常喜欢这个!非常干净:)这给了我一个错误:列表索引超出范围出于某种原因这似乎可行,但如果十进制字符串为0或1234,则不会给出任何结果,我需要它为0。我该怎么做?这似乎是可行的,但如果十进制字符串是0或1234,它什么也不给,我需要它是0。我该怎么做?没关系。但是,切片不能概括这里的情况,也许您可以使用
    string.index
    获得
    的位置,并相应地使用切片:不要介意。但是,切片不能概括这里的情况,也许您可以使用
    string.index
    获得
    的位置,并相应地使用切片: