Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python 2.7 and 3.3.2, why int('0.0') does not work?

As the title says, in Python (I tried in 2.7 and 3.3.2), why int('0.0') does not work? It gives this error:

ValueError: invalid literal for int() with base 10: '0.0'

If you try int('0') or int(eval('0.0')) it works...

like image 897
Saullo G. P. Castro Avatar asked Jun 17 '13 07:06

Saullo G. P. Castro


People also ask

Is 0.0 A float in Python?

Float() returns the value based on the argument or parameter value that is being passed to it. If no value or blank parameter is passed, it will return the values 0.0 as the floating-point output. Python float values are represented as 64-bit double-precision values.

What happens if you int a string python?

In Python an strings can be converted into a integer using the built-in int() function. The int() function takes in any python data type and converts it into a integer.


1 Answers

From the docs on int:

int(x=0) -> int or long
int(x, base=10) -> int or long

If x is not a number or if base is given, then x must be a string or Unicode object representing an integer literal in the given base.

So, '0.0' is an invalid integer literal for base 10.

You need:

>>> int(float('0.0'))
0

help on int:

>>> print int.__doc__
int(x=0) -> int or long
int(x, base=10) -> int or long

Convert a number or string to an integer, or return 0 if no arguments
are given.  If x is floating point, the conversion truncates towards zero.
If x is outside the integer range, the function returns a long instead.

If x is not a number or if base is given, then x must be a string or
Unicode object representing an integer literal in the given base.  The
literal can be preceded by '+' or '-' and be surrounded by whitespace.
The base defaults to 10.  Valid bases are 0 and 2-36.  Base 0 means to
interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4
like image 155
Ashwini Chaudhary Avatar answered Oct 03 '22 23:10

Ashwini Chaudhary