Re: [Tutor] floats
Michael bridges micha_el2...@yahoo.com wrote i want to 10 / 1000 and get 0.01 not 0 if 1000 is made 1000.00 then 0.01 is printed but that gives 500 / 1000.00 is 0.5 not 0.50 can someone till me how to get a two decimal precision every time? You are confusing two different things.. The first case is that of integer versus float division. You solve that by either explicitly making one of the numbers a float or by converting to float using the foloat() operation. The second issue is the *representation* of the result. The number of decimal places displayed is a matter of representation only, the actual value stored will not change. Thus 0.5 and 0.50 and 0.5000 are all the same value in memory, it is only how they are printed that changes and that is controlled by how you choose to format the display. Typically you use a format string: res = 10/float(20) %f % res %7.3f % res %5.1f % res %6e % res %6.4g % res HTH, -- Alan Gauld Author of the Learn to Program web site http://www.alan-g.me.uk/ ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
ok, will attempt to clarify. i want to out put of two numbers [int or float or anything] to be x.xx not x.x. i want two numbers after the decimal not one. --- On Tue, 6/7/11, Alan Gauld alan.ga...@btinternet.com wrote: From: Alan Gauld alan.ga...@btinternet.com Subject: Re: [Tutor] floats To: tutor@python.org Date: Tuesday, June 7, 2011, 1:16 AM Michael bridges micha_el2...@yahoo.com wrote i want to 10 / 1000 and get 0.01 not 0 if 1000 is made 1000.00 then 0.01 is printed but that gives 500 / 1000.00 is 0.5 not 0.50 can someone till me how to get a two decimal precision every time? You are confusing two different things.. The first case is that of integer versus float division. You solve that by either explicitly making one of the numbers a float or by converting to float using the foloat() operation. The second issue is the *representation* of the result. The number of decimal places displayed is a matter of representation only, the actual value stored will not change. Thus 0.5 and 0.50 and 0.5000 are all the same value in memory, it is only how they are printed that changes and that is controlled by how you choose to format the display. Typically you use a format string: res = 10/float(20) %f % res %7.3f % res %5.1f % res %6e % res %6.4g % res HTH, -- Alan Gauld Author of the Learn to Program web site http://www.alan-g.me.uk/ ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
Hello Michael On 7 June 2011 21:10, Michael bridges micha_el2...@yahoo.com wrote: ok, will attempt to clarify. i want to out put of two numbers [int or float or anything] to be x.xx not x.x. i want two numbers after the decimal not one. Alan's already given you exactly the correct answer. Have you tried his suggestions? What did you not understand or what problems did you run into? Here's a little example from an interactive Python interpreter session which shows you how you can play with these concepts to help clarify your understanding: Python 2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win 32 Type help, copyright, credits or license for more information. res = 10/float(20) res 0.5 %f % res '0.50' %7.3f % res ' 0.500' str = %6e % res str '5.00e-01' print str 5.00e-01 Regards, Walter ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
[Tutor] floats
i saw it somewhere, but where? i want to 10 / 1000 and get 0.01 not 0 if 1000 is made 1000.00 then 0.01 is printed but that gives 500 / 1000.00 is 0.5 not 0.50 i might be thinking C# not python. can someone till me how to get a two decimal precision every time? ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
Can someone till me how to get a two decimal precision every time? print %.2f % (500/1000.0) # or... result = 500 / 1000.0 print %.2f % result Using 'new' style string formatting works too: print {0:.2f}.format(500/1000.0) -Modulok- On 6/6/11, Michael bridges micha_el2...@yahoo.com wrote: i saw it somewhere, but where? i want to 10 / 1000 and get 0.01 not 0 if 1000 is made 1000.00 then 0.01 is printed but that gives 500 / 1000.00 is 0.5 not 0.50 i might be thinking C# not python. can someone till me how to get a two decimal precision every time? ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
On 2011/06/07 04:43 AM, Michael bridges wrote: i saw it somewhere, but where? i want to 10 / 1000 and get 0.01 not 0 if 1000 is made 1000.00 then 0.01 is printed but that gives 500 / 1000.00 is 0.5 not 0.50 i might be thinking C# not python. can someone till me how to get a two decimal precision every time? ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor 100/1000 0 from __future__ import division 100/1000 0.1 100//1000 0 So you can still get the old behaving floor division using double divisors and any normal syntax will be true division. In Python 3.x it's already the standard, this is only necessary for Python 2.x -- Christian Witts // ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
you have two options 1) either type cast like float_b = float(etcetc) 2) use round method which available inbuilt On Sat, Dec 4, 2010 at 12:22 AM, Christopher Spears cspears2...@yahoo.comwrote: I have a float variable that is very long. float_a = 1.16667 However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. float_a = 1.16667 print %.2f % float_a 1.17 I tried the following: float_b = %.2f % float_a float_b '1.17' type(float_b) type 'str' This doesn't work because it yields a string. Any suggestions? ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor -- Nitin Pawar ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
On 12/3/2010 1:52 PM, Christopher Spears wrote: I have a float variable that is very long. float_a = 1.16667 However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. float_a = 1.16667 print %.2f % float_a 1.17 I tried the following: float_b = %.2f % float_a float_b '1.17' type(float_b) type 'str' This doesn't work because it yields a string. Any suggestions? ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor float_b = float(float_b) That takes the string and makes it a float. ~Corey Richardson ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
On 12/3/2010 10:52 AM Christopher Spears said... I have a float variable that is very long. float_a = 1.16667 However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. float_a = 1.16667 print %.2f % float_a 1.17 I tried the following: float_b = %.2f % float_a float_b '1.17' type(float_b) type 'str' This doesn't work because it yields a string. Any suggestions? If you want control over the precision I'd use the decimal module. x 1.1666 y = decimal.Decimal(%.2f % x) y Decimal('1.17') Emile ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
On Fri, Dec 3, 2010 at 1:52 PM, Christopher Spears cspears2...@yahoo.com wrote: float_a = 1.16667 However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. Use the built-in round() function, like this: a = 1.16667 print a 1.16667 b = round(a, 2) print b 1.17 -- Jerry ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
Christopher Spears cspears2...@yahoo.com wrote I have a float variable that is very long. float_a = 1.16667 Thats not really very long! However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. float_a = 1.16667 print %.2f % float_a 1.17 Rounding issues will give you all sorts of issues here. However if you really want to round it up or down to 2 digits then the round() function is what you want. But I'd be interested in why you need to lose precision like that, it's not that common a requirement. Usually controlling the presentation is sufficient (and preferred). float_b = %.2f % float_a float_b '1.17' type(float_b) type 'str' This doesn't work because it yields a string. It works in that it returns a string representation of what you want. It doesn't produce a float because *string formatting* can only produce strings. HTH, -- Alan Gauld Author of the Learn to Program web site http://www.alan-g.me.uk/ ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] floats
On Fri, Dec 3, 2010 at 1:52 PM, Christopher Spears cspears2...@yahoo.comwrote: I have a float variable that is very long. float_a = 1.16667 However, I want to pass the value of float_a to float_b, but I want the float to be accurate to two decimal points. float_a = 1.16667 print %.2f % float_a 1.17 I tried the following: float_b = %.2f % float_a float_b '1.17' type(float_b) type 'str' This doesn't work because it yields a string. Any suggestions? This would be good to read: http://docs.python.org/tutorial/floatingpoint.html If you have: float_a = 1.7 and do round(float_a, 2) you get: round(1.16667, 2) 1.1699 I don't think that is what you want, but since floating point arithmetic is done in binary there are rounding errors. You might want to look at the decimal module ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor -- Joel Goldstick ___ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
[Tutor] Floats and rounding down
Hey all! A very simple question. I'm writing a simple program which does some calculations with money. I use floats for that, and yes, I know that floats arent as perfect as decimals, but its doesnt have to be a perfect program. I have, however, run into a visual problem. Something like temp = '$' + str(round(x,2)) will make x = $1.537 read as $1.54. That's perfect. However, when x = 1.3, or x = 5.0, it will display just that: $1.3 or $5. I don't like that - I wan't 1.30 and 5.00, because that looks much more clean and homogeneous. Is there any - not to complicated - way to do that? Thanks in advance for reading and caring! Toon Pieton ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Floats and rounding down
Toon Pieton [EMAIL PROTECTED] wrote Something like temp = '$' + str(round(x,2)) will make x = $1.537 read as $1.54. That's perfect. However, when x = 1.3, or x = 5.0, it will display just that: $1.3 or $5. I don't like that - I wan't 1.30 and 5.00, because that looks much more clean and homogeneous. Is there any - not to complicated - way to do that? Yes, use string formatting. print $%0.2f % 1.3 $1.30 There are a wealth of other variations, worth studying in detail. HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Floats and rounding down
Alan Gauld wrote: Toon Pieton [EMAIL PROTECTED] wrote Something like temp = '$' + str(round(x,2)) will make x = $1.537 read as $1.54. That's perfect. However, when x = 1.3, or x = 5.0, it will display just that: $1.3 or $5. I don't like that - I wan't 1.30 and 5.00, because that looks much more clean and homogeneous. Is there any - not to complicated - way to do that? Yes, use string formatting. print $%0.2f % 1.3 $1.30 There is no need to round first, either: In [1]: print '$%0.2f' % 1.537 $1.54 Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor