简体   繁体   中英

float value in a string to int in Python

Why isn't it possible to directly convert a floating point number represented as a string in Python to an int variable?

For example,

>>> val=str(10.20)
>>> int(val)
Traceback (most recent call last):
  File "<stdin>", line 1, in
ValueError: invalid literal for int() with base 10: '10.2'

However, this works,

>>> int(float(val))
10

The reason is that int is doing two different things in your two examples.

In your first example, int is converting a string to an integer. When you give it 10.2 , that is not an integer so it fails.

In your second example, int is casting a floating point value to an integer. This is defined to truncate any fractional part before returning the integer value.

There is a way to do this conversion if you are willing to use a third party library (full disclosure, I am the author). The fastnumbers library was written for quick conversions from string types to number types. One of the conversion functions is fast_forceint , which will convert your string to an integer, even if it has decimals.

>>> from fastnumbers import fast_forceint
>>> fast_forceint('56')
56
>>> fast_forceint('56.0')
56
>>> fast_forceint('56.07')
56

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM