Converting number in scientific notation to int

后端 未结 3 1686
陌清茗
陌清茗 2020-12-06 09:33

Could someone explain why I can not use int() to convert an integer number represented in string-scientific notation into a python int?

For

3条回答
  •  感动是毒
    2020-12-06 10:26

    Because in Python (at least in 2.x since I do not use Python 3.x), int() behaves differently on strings and numeric values. If you input a string, then python will try to parse it to base 10 int

    int ("077")
    >> 77
    

    But if you input a valid numeric value, then python will interpret it according to its base and type and convert it to base 10 int. then python will first interperet 077 as base 8 and convert it to base 10 then int() will jsut display it.

    int (077)  # Leading 0 defines a base 8 number.
    >> 63
    077 
    >> 63
    

    So, int('1e1') will try to parse 1e1 as a base 10 string and will throw ValueError. But 1e1 is a numeric value (mathematical expression):

    1e1
    >> 10.0
    

    So int will handle it as a numeric value and handle it as though, converting it to float(10.0) and then parse it to int. So Python will first interpret 1e1 since it was a numric value and evaluate 10.0 and int() will convert it to integer.

    So calling int() with a string value, you must be sure that string is a valid base 10 integer value.

提交回复
热议问题