I would like to convert a decimal number [say 0.33333] to percentage [expected answer 33.33%]
I used the following
x = 0.3333
print[format[x,'.2%']]
which gives indeed 33.33%
However, the result is a string, I would like it to still be a number [in % format] to be able to perform mathematical operations on it [e.g. format[x,'.2%']*2
to
give 66.66%
But this throws an exception as 33.33% is a string
rdas
19.4k6 gold badges32 silver badges43 bronze badges
asked Jun 1, 2019 at 21:49
4
An idea is to create a custom datatype, I'll call it Percent
, which inherit everything from float
, but when you want to use it as a string it shows a %
and multiplies the number with 100.
class Percent[float]:
def __str__[self]:
return '{:.2%}'.format[self]
x = Percent[0.3333]
print[x]
# 33.33%
If you want to represnt the
value in envoirment like jupyter notebook in your format you can add same method with the name __repr__
to Percent Class:
def __repr__[self]:
return '{:.2%}'.format[self]
user35443
6,14111 gold badges52 silver badges72 bronze badges
answered Jun 1, 2019 at 22:31
MehdiMehdi
1,1521 gold badge14 silver badges34 bronze badges
I made it on a single line like:
x = 0.333
print[str[int[x*100]] + "%]
answered Feb 12, 2021 at 22:36
1
x = 0.3333
print['{:,.2%}'.format[x]] # Prints percentage format, retains x as float variable
Outputs 33.33%
answered Apr 23, 2021 at 23:09
Use f-strings! [python >= 3.6]
x = 0.3333
print[f"{x:,.2%}"]
That is: print x, to 2 decimal places, and add the %
symbol at the end. x is not altered by the f-string.
answered Jun 5 at 2:49
vtnatevtnate
1211 silver badge8 bronze badges
Converting from float to percentage
I would like to convert a decimal number [say 0.33333] to percentage [expected answer 33.33%]
I used the following
x = 0.3333 print[format[x,'.2%']]
which gives indeed 33.33%
However, the result is a string, I would like it to still be a number [in % format] to be able to perform mathematical operations on it [e.g. format[x,'.2%']*2
to give 66.66%
But this throws an exception as 33.33% is a string
Advertisement
Answer
An idea is to
create a custom datatype, I’ll call it Percent
, which inherit everything from float
, but when you want to use it as a string it shows a %
and multiplies the number with 100.
class Percent[float]: def __str__[self]: return '{:.2%}'.format[self] x = Percent[0.3333] print[x] # 33.33%
If you want to represnt the value in envoirment like jupyter notebook in your format you can add same method with the name __repr__
to Percent Class:
def __repr__[self]: return '{:.2%}'.format[self]