Converting number in scientific notation to int

后端 未结 3 1680
陌清茗
陌清茗 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:21

    Behind the scenes a scientific number notation is always represented as a float internally. The reason is the varying number range as an integer only maps to a fixed value range, let's say 2^32 values. The scientific representation is similar to the floating representation with significant and exponent. Further details you can lookup in https://en.wikipedia.org/wiki/Floating_point.

    You cannot cast a scientific number representation as string to integer directly.

    print int(1e1)  # Works
    

    Works because 1e1 as a number is already a float.

    >>> type(1e1)
    
    

    Back to your question: We want to get an integer from float or scientific string. Details: https://docs.python.org/2/reference/lexical_analysis.html#integers

    >>> int("13.37")
    Traceback (most recent call last):
      File "", line 1, in 
    ValueError: invalid literal for int() with base 10: '13.37'
    

    For float or scientific representations you have to use the intermediate step over float.

提交回复
热议问题