By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,660 Members | 1,102 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,660 IT Pros & Developers. It's quick & easy.

aproximate a number

P: n/a
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3

Regards
Aug 28 '05 #1
Share this Question
Share on Google+
13 Replies


P: n/a
billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3

Regards


math.ceil returns what you need but as a float, then create an int
import math
math.ceil (12.3) 13.0 int (math.ceil (12.3))

13

hth

--
rafi

"Imagination is more important than knowledge."
(Albert Einstein)
Aug 28 '05 #2

P: n/a
billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


Have a look at math.ceil
import math
math.ceil(5.7)

6.0
Will McGugan
--
http://www.willmcgugan.com
"".join({'*':'@','^':'.'}.get(c,0) or chr(97+(ord(c)-84)%26) for c in
"jvyy*jvyyzpthtna^pbz")
Aug 28 '05 #3

P: n/a
billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


Probably something like int(number + 0.99999999), depending on the
boundary cases you want (which you haven't mentioned here. Technically,
it should be int(number + 1.0 - epsilon).

--
Erik Max Francis && ma*@alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM erikmaxfrancis
If you are afraid of loneliness, do not marry.
-- Anton Chekhov
Aug 28 '05 #4

P: n/a
Thank you. :-)
Aug 28 '05 #5

P: n/a
billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some
example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


What about 2.0? By your spec that should be rounded to 3 - is that what you
intend?

If you do, you can simply do this:

def approx(x):
return int(x+1.0)

Regards,
Michael.
Aug 28 '05 #6

P: n/a
Michael Sparks wrote:
def approx(x):
return int(x+1.0)


I doubt this is what the OP is looking for.
approx(3.2) 4 approx(3.0)

4

Others have pointed to math.ceil, which is most likely what the OP wants.

/Mikael Olofsson
Universitetslektor (Senior Lecturer [BrE], Associate Professor [AmE])
Linköpings universitet

-----------------------------------------------------------------------
E-Mail: mi****@isy.liu.se
WWW: http://www.dtr.isy.liu.se/en/staff/mikael
Phone: +46 - (0)13 - 28 1343
Telefax: +46 - (0)13 - 28 1339
-----------------------------------------------------------------------
Linköpings kammarkör: www.kammarkoren.com Vi söker tenorer och basar!
Aug 29 '05 #7

P: n/a
Mikael Olofsson wrote:
Michael Sparks wrote:
def approx(x):
return int(x+1.0)
I doubt this is what the OP is looking for.

.... Others have pointed to math.ceil, which is most likely what the OP wants.


I agree that's "likely" but, as Michael pointed out in the text you
removed, his version does do what the OP's spec states, when interpreted
literally. Very likely there's a language issue involved, and Michael
was aware of that as well, I'm sure.

Still, others had already posted on math.ceil(), so Michael was just
trying to make sure that the OP realized his specification was
inadequate and -- just in case he wanted something other than math.ceil
-- he provided a valid alternative.

-Peter
Aug 29 '05 #8

P: n/a
On Sun, 28 Aug 2005 23:11:09 +0200, billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


The standard way to do this is thus:

def RoundToInt(x):
""" Round the float x to the nearest integer """
return int(round(x+0.5))

x = 5.7
print x, '-->', RoundToInt(x)
x = 52.987
print x, '-->', RoundToInt(x)
x = 3.34
print x, '-->', RoundToInt(x)
x = 2.1
print x, '-->', RoundToInt(x)

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3
Aug 30 '05 #9

P: n/a
Thomas Bartkus wrote:
On Sun, 28 Aug 2005 23:11:09 +0200, billiejoex wrote:
Hi all. I'd need to aproximate a given float number into the next (int)
bigger one. Because of my bad english I try to explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


The standard way to do this is thus:

def RoundToInt(x):
""" Round the float x to the nearest integer """
return int(round(x+0.5))

x = 5.7
print x, '-->', RoundToInt(x)
x = 52.987
print x, '-->', RoundToInt(x)
x = 3.34
print x, '-->', RoundToInt(x)
x = 2.1
print x, '-->', RoundToInt(x)

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


RoundToInt(2.0) will give you 3.

Aug 30 '05 #10

P: n/a
On 2005-08-30, Devan L <de****@gmail.com> wrote:
Hi all. I'd need to aproximate a given float number into the
next (int) bigger one. Because of my bad english I try to
explain it with some example:

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


The standard way to do this is thus:

def RoundToInt(x):
""" Round the float x to the nearest integer """
return int(round(x+0.5))

x = 5.7
print x, '-->', RoundToInt(x)
x = 52.987
print x, '-->', RoundToInt(x)
x = 3.34
print x, '-->', RoundToInt(x)
x = 2.1
print x, '-->', RoundToInt(x)

5.7 --> 6
52.987 --> 53
3.34 --> 4
2.1 --> 3


RoundToInt(2.0) will give you 3.


That's what the OP said he wanted. The next bigger integer
after 2.0 is 3.

--
Grant Edwards grante Yow! I'd like TRAINED
at SEALS and a CONVERTIBLE on
visi.com my doorstep by NOON!!
Aug 30 '05 #11

P: n/a
Grant Edwards wrote:
On 2005-08-30, Devan L <de****@gmail.com> wrote:

RoundToInt(2.0) will give you 3.


That's what the OP said he wanted. The next bigger integer
after 2.0 is 3.

--
Grant Edwards grante Yow! I'd like TRAINED
at SEALS and a CONVERTIBLE on
visi.com my doorstep by NOON!!


It's not really clear whether he wanted it to round up or to go to the
next biggest integer because he says he has bad english. I can't think
of a particular use of returning the next bigger integer.

Aug 30 '05 #12

P: n/a
On 2005-08-30, Devan L <de****@gmail.com> wrote:
Grant Edwards wrote:
On 2005-08-30, Devan L <de****@gmail.com> wrote:
>
> RoundToInt(2.0) will give you 3.


That's what the OP said he wanted. The next bigger integer
after 2.0 is 3.


It's not really clear whether he wanted it to round up or to go to the
next biggest integer because he says he has bad english. I can't think
of a particular use of returning the next bigger integer.


You're probably right. I suspect what he really wants is

i = int(math.ceil(x))

--
Grant Edwards grante Yow! Is it FUN to be
at a MIDGET?
visi.com
Aug 30 '05 #13

P: n/a
I wanted the round up the number (5.0 = 5.0, not 6.0.). The ceil funciotn is
the right one for me.
Thanks to all.

Grant Edwards wrote:
On 2005-08-30, Devan L <de****@gmail.com> wrote:
>
> RoundToInt(2.0) will give you 3.

That's what the OP said he wanted. The next bigger integer
after 2.0 is 3.


It's not really clear whether he wanted it to round up or to go to the
next biggest integer because he says he has bad english. I can't think
of a particular use of returning the next bigger integer.


You're probably right. I suspect what he really wants is

i = int(math.ceil(x))

--
Grant Edwards grante Yow! Is it FUN to be
at a MIDGET?
visi.com

Aug 30 '05 #14

This discussion thread is closed

Replies have been disabled for this discussion.