471,318 Members | 1,983 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,318 software developers and data experts.

Floating Number format problem


How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
1.00 =1
1.567 =1.57
2324.012 =2324.01

I can not find any Formatting Operations is able to meet my
requirement.
Any suggestion will be appreciated.

Jun 12 '07 #1
8 1634
ici
On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
1.00 =1
1.567 =1.57
2324.012 =2324.01

I can not find any Formatting Operations is able to meet my
requirement.
Any suggestion will be appreciated.
>>print "%.02f" % (2324.012)
2324.01
>>>
http://docs.python.org/tut/node9.htm...00000000000000

Jun 12 '07 #2
On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
1.00 =1
1.567 =1.57
2324.012 =2324.01
I can not find any Formatting Operations is able to meet my
requirement.
Any suggestion will be appreciated.
>print "%.02f" % (2324.012)
2324.01

http://docs.python.org/tut/node9.htm...00000000000000
thank you !
But in these case:
>>print '%.02f'%1.002
1.00
>>print '%.02f'%1.00
1.00

I just expect it to output "1" , but these way will output 1.00

Jun 12 '07 #3
En Tue, 12 Jun 2007 05:46:25 -0300, <ke********@gmail.comescribió:
On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
>On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
print "%.02f" % (2324.012)
2324.01
But in these case:
>>>print '%.02f'%1.002
1.00
>>>print '%.02f'%1.00
1.00

I just expect it to output "1" , but these way will output 1.00
def my_formatter_ommitting_trailing_zeroes(value):
result = '%.2f' % value
if result[-3:]=='.00': result = result[:-3]
return result

for f in [1.0, 1.002, 1.12, 1.567, 2324.012]:
print "%g -%s" % (f, my_formatter_ommitting_trailing_zeroes(f))

--
Gabriel Genellina

Jun 12 '07 #4
En Tue, 12 Jun 2007 05:46:25 -0300, <ke********@gmail.comescribió:
On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
>On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
print "%.02f" % (2324.012)
2324.01
But in these case:
>>>print '%.02f'%1.002
1.00
>>>print '%.02f'%1.00
1.00

I just expect it to output "1" , but these way will output 1.00
def my_formatter_ommitting_trailing_zeroes(value):
result = '%.2f' % value
if result[-3:]=='.00': result = result[:-3]
return result

for f in [1.0, 1.002, 1.12, 1.567, 2324.012]:
print "%g -%s" % (f, my_formatter_ommitting_trailing_zeroes(f))

--
Gabriel Genellina

Jun 12 '07 #5
Gabriel Genellina <ga*******@yahoo.com.arwrote:
En Tue, 12 Jun 2007 05:46:25 -0300, <ke********@gmail.comescribió:
>On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
>>On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:

How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
print "%.02f" % (2324.012)
2324.01
But in these case:
>>>>print '%.02f'%1.002
1.00
>>>>print '%.02f'%1.00
1.00

I just expect it to output "1" , but these way will output 1.00

def my_formatter_ommitting_trailing_zeroes(value):
result = '%.2f' % value
if result[-3:]=='.00': result = result[:-3]
return result

for f in [1.0, 1.002, 1.12, 1.567, 2324.012]:
print "%g -%s" % (f, my_formatter_ommitting_trailing_zeroes(f))
Or:

def my_other_formatter_ommitting_trailing_zeroes(value ):
result = '%.2f' % value
return result.rstrip('0.')

my_other_formatter_ommitting_trailing_zeroes(1.102 ) == "1.1"
Jun 12 '07 #6
Marc Christiansen wrote:
Gabriel Genellina <ga*******@yahoo.com.arwrote:
>En Tue, 12 Jun 2007 05:46:25 -0300, <ke********@gmail.comescribió:
>>On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:

How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
print "%.02f" % (2324.012)
2324.01
Or:

def my_other_formatter_ommitting_trailing_zeroes(value ):
result = '%.2f' % value
return result.rstrip('0.')
Make that result.rstrip("0").rstrip("."), or it may fail:
>>("%.2f" % 100.0).rstrip(".0")
'1' # wrong
>>("%.2f" % 100.0).rstrip("0").rstrip(".")
'100'

Peter
Jun 12 '07 #7
On Jun 12, 8:04 pm, Marc Christiansen <use...@solar-empire.dewrote:
Gabriel Genellina <gagsl-...@yahoo.com.arwrote:
En Tue, 12 Jun 2007 05:46:25 -0300, <kelvin....@gmail.comescribió:
On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
print "%.02f" % (2324.012)
2324.01
But in these case:
>>>print '%.02f'%1.002
1.00
print '%.02f'%1.00
1.00
I just expect it to output "1" , but these way will output 1.00
def my_formatter_ommitting_trailing_zeroes(value):
result = '%.2f' % value
if result[-3:]=='.00': result = result[:-3]
return result
for f in [1.0, 1.002, 1.12, 1.567, 2324.012]:
print "%g -%s" % (f, my_formatter_ommitting_trailing_zeroes(f))

Or:

def my_other_formatter_ommitting_trailing_zeroes(value ):
result = '%.2f' % value
return result.rstrip('0.')

my_other_formatter_ommitting_trailing_zeroes(1.102 ) == "1.1"
Marc, thanks for coming, but:
>>my_other_formatter_ommitting_trailing_zeroes(100 .00)
'1'
>>>
What does the OP want to happen with 1.2? I suspect he wants '1.2',
not '1.20'

Looks like a variation of Marc's idea will do the business:
>>values = [100.0, 1.0, 1.2, 1.002, 1.12, 1.567, 2324.012]
[('%.02f' % x).rstrip('0').rstrip('.') for x in values]
['100', '1', '1.2', '1', '1.12', '1.57', '2324.01']

Howzat?

Jun 12 '07 #8
Peter Otten <__*******@web.dewrote:
Marc Christiansen wrote:
>Gabriel Genellina <ga*******@yahoo.com.arwrote:
>>En Tue, 12 Jun 2007 05:46:25 -0300, <ke********@gmail.comescribió:

On 6 12 , 3 16 , ici <iltch...@gmail.comwrote:
On Jun 12, 10:10 am, <kelvin....@gmail.comwrote:
>
How could I format the float number like this: (keep 2 digit
precision)
1.002 =1
1.12 =1.12
>print "%.02f" % (2324.012)
2324.01
Or:

def my_other_formatter_ommitting_trailing_zeroes(value ):
result = '%.2f' % value
return result.rstrip('0.')

Make that result.rstrip("0").rstrip("."), or it may fail:
>>>("%.2f" % 100.0).rstrip(".0")
'1' # wrong
>>>("%.2f" % 100.0).rstrip("0").rstrip(".")
'100'
Oops, didn't think of what happens if the value is a multiple of 10.
Thanks for correcting me. And thanks to John, who found it too.

Marc
Jun 12 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Roger Leigh | last post: by
5 posts views Thread by Anton Noll | last post: by
12 posts views Thread by Dave Rahardja | last post: by
687 posts views Thread by cody | last post: by
25 posts views Thread by Gaurav Verma | last post: by
2 posts views Thread by ngn | last post: by
5 posts views Thread by Peteroid | last post: by
10 posts views Thread by Bryan Parkoff | last post: by
14 posts views Thread by mathieu | last post: by
reply views Thread by rosydwin | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.