简体   繁体   中英

Python how to remove decimal?

I've found some other topics on this but I couldn't get it to work. Please pardon my naivety with Python.

Berekening1 = 8.5
Berekening2 = 8.1+4.8
Berekening3 = 8*10
Berekening4 = 3
x = Berekening1 * Berekening2 * Berekening3 + Berekening4
print "Het antwoord van de berekening is:",
round(x); print x,
print "."

I want x to be an integer. How do I do that? I tried both int and round .

Anyone also have an idea on how to remove the "space" between x and "." at the end when code is executed?

You would need to reassign x to the value of x = int(x) or you could also use str.format if you just want the output formatted:

print "Het antwoord van de berekening is: {:.0f}.".format(x)

int and round will exhibit different behaviour, if you have anything >= 5 after the decimal point then int will floor but round will round up, if you want to actually use round you might want to combine the two:

In [7]: x = round(1.5)

In [8]: x
Out[8]: 2.0

In [9]: int(x)
Out[9]: 2

Or again combine with str.format :

In [10]: print "Het antwoord van de berekening is: {:.0f}".format(round(1.5))
Het antwoord van de berekening is: 2

The round() function cannot alter the x variable in place, as numbers are immutable. Instead, the rounded result is returned, which your code ignores.

Store the result back in x :

x = round(x)

This will give you a floating point number rounded to the nearest whole number.

Alternatively, use x = int(x) , which gives you an integer number, but floors that number (removes the decimal portion regardless if it is closer to the next whole number or not).

For just removing decimal part of an integer(eg- 45.55 to 45), you can try using trunc() method with math library, just like this-

import math
i=45.55
i=math.trunc(i)
print(i)

Output will be- 45, trunc() method doesn't rounds off the integer to the nearest whole number, it justs cuts off the decimal portion.

Or if you want to round off then you can use the round() method.

There are two functions in Python, they are providing two different results:

some_float = 10.7
print(int(some_float)) 
print(round(some_float)) 

[output]10
[output]11

Then, if you want "." but have don't want to have zeroes after the number you may easily print out in the following way:

print(str(round(some_float))+".")
[output]11.

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