[Tutor] cut all decimal places with zeros
Tim Michelsen
timmichelsen at gmx-topmail.de
Tue Apr 15 01:26:51 CEST 2008
Hello,
how can I suppress the decimal places for (only those) numbers whos
decimal places are zero (0)?
Example:
#### CODE ####
In [1]: m = 2.0
In [2]: n = 2.56789080
In [3]: n_format = '%.4f' %n
In [4]: n_format
Out[4]: '2.5679'
In [5]: m_format = '%.4f' %m
In [6]: m_format
Out[6]: '2.0000'
### END ####
I would like to have the "m_format" to be formatted like "2" and the
n_format like "2.5679". How can I achive this?
A g with "2.4" should return "2.4" and not "2.4000".
Basically, I am looking for a way to eliminate the decimal places that
are zero (0).
I tried this humble function before appling the formatting and it works
well with the numbers:
### CODE ###
def cut_decimals(float):
"""
input: floating number
output: number as string with zero decimals removed
"""
#print float-int(float)
#print '%.4f' %float
if float-int(float) != 0:
number = '%.4f' %float
number = number.replace('0.','X.')
number = number.replace('0','')
number = number.replace('X.','0.')
else:
number = '%.0f' %float
return number
n = 2.0
m = 2.5678908
g = 2.4
h = 1.45
i = 0.67
numbers = [n, m, g, h, i]
for i in numbers:
i_f = cut_decimals(i)
print i_f
### END ###
### OUTPUT ###
%run ./test_number.py
2
2.5679
2.4
1.45
0.67
### END ###
Is there any more efficient solution using string formatting only?
Thanks in adavance.
Kind regards,
Timmie
More information about the Tutor
mailing list