Rounding when converting float to integer

  • Permalink
  • submit to reddit
  • Email
  • Follow


Cint(3/2) = 2 (rounded up, I would have thought the answer would be 1)

Cint(5/2) = 2 (rounded down)

The Access help says Cint() rounds to the nearest even number, but why??

Do I need to "roll my own" integer conversion to get it to always round up 
or down?

I looked at Cint(3\2) and Cint(5\2) which seems to consistently round 
down... that may do.
-- 
regards,

Br@dley 


0
Reply dontlookforme (84) 4/13/2006 12:51:37 AM

See related articles to this posting


Br@dley wrote:
> Cint(3/2) = 2 (rounded up, I would have thought the answer would be 1)
> 
> Cint(5/2) = 2 (rounded down)
> 
> The Access help says Cint() rounds to the nearest even number, but why??
> 
> Do I need to "roll my own" integer conversion to get it to always round up 
> or down?
> 
> I looked at Cint(3\2) and Cint(5\2) which seems to consistently round 
> down... that may do.

Format(3/2)  -> 1.5  a string.  To get a number use Val(Format(3/2)).

Int(Format(3/2)) -> 1.  Int() removes the decimal.

Format(5/2) -> 2.5 a string.

Val(Format(5/2)) -> 2.5.  Int(Format(5/2)) - > 2.

-- 
MGFoster:::mgf00 <at> earthlink <decimal-point> net
Oakland, CA (USA)
0
Reply me2968 (1473) 4/13/2006 2:06:52 AM

Public Function Ceiling(ByVal d As Double) As Long
Ceiling = -(Int(-d))
End Function

0
Reply lylefairfield (1852) 4/13/2006 2:37:54 AM

MGFoster wrote:
> Br@dley wrote:
>> Cint(3/2) = 2 (rounded up, I would have thought the answer would be
>> 1) Cint(5/2) = 2 (rounded down)
>>
>> The Access help says Cint() rounds to the nearest even number, but
>> why?? Do I need to "roll my own" integer conversion to get it to always
>> round up or down?
>>
>> I looked at Cint(3\2) and Cint(5\2) which seems to consistently round
>> down... that may do.
>
> Format(3/2)  -> 1.5  a string.  To get a number use Val(Format(3/2)).
>
> Int(Format(3/2)) -> 1.  Int() removes the decimal.
>
> Format(5/2) -> 2.5 a string.
>
> Val(Format(5/2)) -> 2.5.  Int(Format(5/2)) - > 2.

Ta. I guess my main question was WHY the Cint() rounds to the nearest even 
number?? Just interested in the reasoning for implementing it that way.
-- 
regards,

Br@dley 


0
Reply dontlookforme (84) 4/13/2006 2:51:28 AM

"Br@dley" <dontlookforme@google.com> wrote in
news:e1keco$1n3$1@news-02.connect.com.au: 

> MGFoster wrote:
>> Br@dley wrote:
>>> Cint(3/2) = 2 (rounded up, I would have thought the answer would be
>>> 1) Cint(5/2) = 2 (rounded down)
>>>
>>> The Access help says Cint() rounds to the nearest even number, but
>>> why?? Do I need to "roll my own" integer conversion to get it to
>>> always round up or down?
>>>
>>> I looked at Cint(3\2) and Cint(5\2) which seems to consistently
>>> round down... that may do.
>>
>> Format(3/2)  -> 1.5  a string.  To get a number use Val(Format(3/2)).
>>
>> Int(Format(3/2)) -> 1.  Int() removes the decimal.
>>
>> Format(5/2) -> 2.5 a string.
>>
>> Val(Format(5/2)) -> 2.5.  Int(Format(5/2)) - > 2.
> 
> Ta. I guess my main question was WHY the Cint() rounds to the nearest
> even number?? Just interested in the reasoning for implementing it
> that way. 

So that the sum of a bunch of rounded numbers will approximate the sum of 
the same numbers before rounding.

-- 
Lyle Fairfield
0
Reply lylefairfield (1852) 4/13/2006 3:07:20 AM

Br@dley wrote in message <e1k7c1$lqv$1@news-02.connect.com.au> :
> Cint(3/2) = 2 (rounded up, I would have thought the answer would be 
> 1)
>
> Cint(5/2) = 2 (rounded down)
>
> The Access help says Cint() rounds to the nearest even number, but 
> why??
>
> Do I need to "roll my own" integer conversion to get it to always 
> round up or down?
>
> I looked at Cint(3\2) and Cint(5\2) which seems to consistently round 
> down... that may do.

Check out these (watch for linebreaks in the links)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deconconversionroundingtruncation.asp
http://support.microsoft.com/default.aspx?scid=kb;EN-US;196652

-- 
Roy-Vidar


0
Reply roy_vidarNOSPAM (280) 4/13/2006 9:25:10 AM

Lyle Fairfield schreef:
> Ceiling = -(Int(-d))

Wow! A quote from the Excel 3.0 manual ... ;-)

--
Paul 


0
Reply kaniest1597 (31) 4/13/2006 9:58:17 AM

kaniest wrote:
> Lyle Fairfield schreef:
> 
>>Ceiling = -(Int(-d))
> 
> 
> Wow! A quote from the Excel 3.0 manual ... ;-)

Everyone learns what they know from somewhere.
0
Reply rkc1870 (593) 4/13/2006 11:18:08 AM

That's interesting to know. I got it from:

From:	 	Paul van Goudoever - view profile
Date:		Fri, Sep 18 1998 12:00 am
Email: 		"Paul van Goudoever" <pgoud...@sig.nl>
Groups: 		comp.databases.ms-access

This one handles reals as well:

Function RoundUp5(varNum As Variant) As Long
On Error Resume Next
    If IsNumeric(varNum) Then
        RoundUp5 = -Int(-varNum / 5) * 5
    End If
End Function

Unfortuantely, Paul doesn't post here anymore.

0
Reply lylefairfield (1852) 4/13/2006 11:29:58 AM

Lyle Fairfield
> Unfortuantely, Paul doesn't post here anymore.

Not as often as I used to but ...

Bye,
Paul 


0
Reply kaniest1597 (31) 4/13/2006 11:43:21 AM

Did Excel 3.0 have VB(A) enabled?

0
Reply lylefairfield (1852) 4/13/2006 12:05:36 PM

Lyle Fairfield:
> Did Excel 3.0 have VB(A) enabled?

IIRC it had some macro language ...
A co-worker gave me the wow-comment when he saw the posting. 


0
Reply kaniest1597 (31) 4/13/2006 12:13:50 PM

Sorry, I wasn't clear. I meant the smart Paul. Well, you could be Paul
VG, I suppose, as I've seen smart things posted by you perviously. If
you were Paul VG you would probably have noted over the years that I
have credited you with this function on several occasions, and forgiven
me for failing to do so in a quickie reponse late at night.

0
Reply lylefairfield (1852) 4/13/2006 12:43:01 PM

I feel a pretty dumb right now, but I still think I hardly
deserve any credits for -(int(-x)). Maybe a tiny little
bit for first posting it in cdma. 


0
Reply kaniest1597 (31) 4/13/2006 1:22:22 PM

I don't deserve as much credit as that. But it might help Bradley.

Assuming you are Paul VG you haven't posted much that's dumb here,
nothing that I have ever noted. If you have, it's compensated for by a
whole bunch of smart things you have posted.

So let's just forget this exchange and move forward.

0
Reply lylefairfield (1852) 4/13/2006 1:45:21 PM

"Br@dley" <dontlookforme@google.com> wrote

 > Ta. I guess my main question was WHY the
 > Cint() rounds to the nearest even number?
 > Just interested in the reasoning for imple-
 > menting it that way.

It's called "Banker's Rounding" and it is what Microsoft chose to use, after 
conferring with their customers.

  Larry Linson
  Microsoft Access MVP


0
Reply bouncer (4168) 4/13/2006 11:18:04 PM
comp.databases.ms-access 42248 articles. 10 followers. Post

15 Replies
149 Views

Similar Articles

[PageSpeed] 32


  • Permalink
  • submit to reddit
  • Email
  • Follow


Reply:

Similar Artilces:

float to integer convertion
I have this functions, c3 and c2 that computes and return a float number. The problem is that wen I pass the result of c2 (float number) to c3(), in function apears to be an integer. Ex.: $calc2=c2(params); (float number) $calc3=c3($calc2); ($calc2 - float number) echo $calc3; (is not the number that supposed to be, because c4 computes $calc2 as if it were an integer: if $calc=39.96 it wil be converted in 39). What is the problem? I really can't see it. _____ function c2($j,$n) { //=(J54*100)/N47 $c=$j*100/$n; return number_format($c,2,",","."); } function ...

how to convert an integer to a float?
Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2, i1)' always return 0, can you please tell me how can i convert it from an integer to float? def compareValue(n1, n2): i1 = int(n1) i2 = int(n2) dx = abs(i2 - i1)/min(i2, i1) print dx return dx < 0.05 On Feb 27, 7:05 pm, "ying...@gmail.com" <ying...@gmail.com> wrote: > Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2, > i1)' always return 0, can you please tell me how can i convert it from > an integer to float? > > def compareValue(n...

need code to convert float format to internal java float format which is kept in 4 bytes integer
JVM structure CONSTANT_Float_info keeps float value in 4 bytes integer type. I need code to convert float to 4 bytes according to JVM spec Thanks a lot Andy wrote: >JVM structure CONSTANT_Float_info keeps float value >in 4 bytes integer type. I need code to convert float to 4 bytes >according to JVM spec >Thanks a lot > > float f = ...; int i = Float.floatToIntBits(f); See http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Float.html#floatToIntBits(float) -- Thomas<dot>Fritsch<squiggle>ops<dot>de On 7 May 2004 07:44:20 -0700, gmlvsk2@yahoo.com (An...

integer to floating poit converter
Hi all. I want to have an integer to floating point converter. On the other hand I want a floating point generator to convert some numbers from integer to floating point . so I can use them as elements of the "primitive table" in verilog code. Have any one help me ? how I can get such tools? I also want to implement the 16 bit floating point adder and multiplier in ASIC. So I must know the operation of them. Please help me. Thanks. Regards, mehr. mmt1 wrote: > I want to have an integer to floating point converter. http://www.eda.org/vhdl-200x/vhdl-200x-ft/packages/Float_ug.pd...

Converting Integer / Float to String
Hi List, is there another way to convert a given String to an Integer or Float type? I am currently using some code like this: begin Value :=Float'Value(Float_String); exception when Constraint_Error => Value := 0.0; end; For me this is very ugly and a big hack. Thanks for any idea. Greetings Alexander Another way is to use the "Ada.Float_Text_IO" package. Especially when you may normally need the Float_Text_IO package in the program. Read a integer from a string (buffer) using the "Get" routine: procedure Get ( From : in String ; ...

Rounding error when doing float-to-integer
Im getting a rounding error when doing a floating-point to integer conversionen. 1.998 is converted to 2, while 1.997 - 1.000 is converted to 1. So it uses tozero rounding for everything except .998 x = y * APRAMETER the value of APARAMETER is 0.002 Im using a SUN Ultra 1 creator 3D with Solaris and Fortran 77 SC 4.2 The same conversion on the same machine but in C using CC gives the correct results (rounding tozero). Anyone else that has experienced this? -- Posted via http://dbforums.com With 1.997 - 1.0 I mean "anything in between 1.997 and 1.0" -- Posted via ...

Converting a string to integer/float
Hello, I am stuck with a problem, might be very trivial, to ask here, but dont find a way out. I read a string like 12345.678 from a text file, which will be string for me, but how do I convert it into a float for my use ? Thanks Ikot aprogrammer@fastmail.fm (Ikot) writes: > I am stuck with a problem, might be very trivial, to ask here, but > dont find a way out. I read a string like 12345.678 from a text file, > which will be string for me, but how do I convert it into a float for > my use ? s = '12345.678' x = float(s) On Thursday 22 January 2004 3:43 am, Ikot wrote: &...

Converting Floats to integers
Hi all, i've been set a task below and got stuck on a few parts, any help would be great! My Task: define a function that takes an int parameter (n) and returns the nth decimal point of root2 i.e myfunc 5 = 1 root2 = 1.1414216 Now, n could be anything up 1000+ and so i need some special method for calculating root 2 (as i need to capture to a higher precision than a typical FLoat or Double would allow), i have been given the following code todo with as i please, im sure i have to add some more to it then call it from my own function 'myfunc' for extra processing, squar...

Problems converting Float to Integer efficiently
Hi all! I have been having problems getting decent code out of GNAT 3.15p (Intel architecture) All I want to do is get the integer part of a Float variable (without checks). I don't want rounding to nearest like I get with "Integer (Y)" In C, a function to do this might look like: int x (float y) { return y; } Which generates code like: pushl %ebp movl %esp,%ebp subl $12,%esp flds 8(%ebp) fnstcw -4(%ebp) movl -4(%ebp),%edx movb $12,%dh movl %edx,-12(%ebp) fldcw -12(%ebp) fistpl -12(%ebp) movl -12(%ebp),%eax fldcw -4(%ebp) movl %ebp,%esp popl %ebp ret In Ada ...

How to convert float to sortable integer in Python
Hi all: I want to convert the float number to sortable integer, like the function float2rawInt() in java, but I don't know the internal expression of float, appreciate your help! On Tue, 16 Jan 2007 01:21:52 -0800, shellon wrote: > Hi all: > I want to convert the float number to sortable integer, like the > function float2rawInt() in java, but I don't know the internal > expression of float, appreciate your help! Google says: Your search - float2rawInt - did not match any documents. Are you sure about that function? What's a sortable integer? -- Steven...

Dividing integers...Convert to float first?
I'm still pretty new to Python. I'm writing a function that accepts thre integers as arguments. I need to divide the first integer by te second integer, and get a float as a result. I don't want the caller of the function to have to pass floats instead of integers. How do I convert the arguments passed to the function into floats before I do the division? Is this necessary, or is their a better way? Thanks, Scott Huey redefined.horizons@gmail.com schrieb: > I'm still pretty new to Python. I'm writing a function that accepts > thre integers as arguments. I need to ...

How to convert a column of integers to float(4.2)??
This is a newbie, and I suspect, a question with a very easy number. I'm surprised googling wasn't much help. How do I convert a whole column of of integers to numbers with 4 digits before and 2 digits after a decimal point? For example, 2091 becomes 20.91 and 124 becomes 1.24 in the table? Thanks! Pete wrote: > This is a newbie, and I suspect, a question with a very easy number. > I'm surprised googling wasn't much help. > > How do I convert a whole column of of integers to numbers with 4 > digits before and 2 digits after a decimal point? > > For...

converting uint8 arrays to integers, floats and doubles
Hey Matlab Family: I've got to process some files FTP'd from a VAX machine. In these files are various types of data: bytes, short integers, long integers, floats, and doubles. Parsing the data off by category is no problem, but interpreting them is. For instance, a page of data might be formated as follows: double(1), byte(3), short(1), long(1), byte(5), double(1). And there might be 200000 pages in a file. I can fread all the raw data from the file, and reshape it to match the number of pages (columns). Thus, I can parse of this matrix by rows for each category of data: the first 8...

Inconsistent Behavior Converting String to Integer/Float
$ruby-yarv -v ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [powerpc-darwin8.5.0] YARVCore 0.4.0 Rev: 466 (2006-02-22) [opts: ] $ruby -v ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0] # Correct behavior num = "+3" Float(num) # -> 3.0 Integer(num) # -> 3 # Strange behavior num = "3e2" Float(num) # -> 300.0 Integer(num) # -> ArgumentError Why is an ArgumentError raised in the second example? OT: ruby-talk seems to be rejecting my email. I sent this twice, and both times it did not make it to the list. -- Daniel -- Posted via http://www.ruby-forum.com/. &...

converting floating point types round off error ....
Consider the equation (flight dynamics stuff): Yaw (Degrees) = Azimuth Angle(Radians) * 180 (Degrees) / 3.1415926535897932384626433832795 (Radians) There's a valid reason to use single precision floating point types. The number of decimal digits guaranteed to be correct on my implementation is 6. (i.e numeric_limits < float >::digits10 = 6 ) If I'm reading the IEEE standard, I'd could paraphrase the issue surrounding conversion to a string and back _without_ loss of precision as follows: If a float is correct to a decimal string with a least 6 significant decimal digits,...

How to convert float to sortable integer in Python #2
DEAR SIR, I SAW YOUR INTERNET QUESTION AND I HAVE THE SAME TROUBLE. CUOLD YOU HELP ME TO MAKE A FLOAT TO INTEGER CONVERTION? DO YOU HAVE ANY EXEL FILE THAT CAN DO THAT? REGARDS AND THANKS A LOT IVAN REYES ___________________________________ AVISO LEGAL: El presente correo electronico no representa la opinion o el consentimiento oficial de la PONTIFICIA UNIVERSIDAD JAVERIANA. Este mensaje es confidencial y puede contener informacion privilegiada la cual no puede ser usada ni divulgada a personas distintas de su destinatario. Esta prohibida la retencion, grabacion, utilizacion, aprovechamien...

Rounding of results in conversion of IEEE floats to integers
Greetings all, I am converting some floating point numbers to (signed or unsigned) integers I am not getting the expected results. It is perhaps the result of the C libraries/compiler that I am using. I have reproduced the same results on Intel and AMD processors. As I understand, floating point conversion should be provided as a fundamental operation in an IEEE compliant FP implementation. Furthermore, in conversions the rounding schemes below should apply in the same way that they are applied to the result of one of the operations (+,-,*,/). The code below has been c...

Converting float to 32bit signed Integer value? (newbie)
Hi there, Currently i am reading an array of signed int's from a file : fs = open("somefile", "rb") self.buffer32 = array('i') self.buffer32.fromfile(fs) # ... fs.close() However, i need to read a float from this array, but of course, the following code does not work : value = float(self.buffer32.pop(0)) e.g instead of getting a value like 2.456 i get 2 How could i properly extract floats from this buffer in phython? Additionally, how could i store floats into this buffer? e.g(which doesn't work) : value = 2.234 self.buffer32.append(int(value)) (In ...

converting floating point number to integer and vice versa
I want to write a function to 1) convert single precision 32 bit floating point number to integer and return integer 2) convert integer to single precision floating point number and return 32 bit floating point What are the parameters I should give to each functions and what logic do I use for both the functions. Do i need to write seperate function for signed and unsigned numbers? Your help would be appreciated On 4 Jan, 17:08, FPGA <FPGA.unkn...@gmail.com> wrote: > I want to write a function to > 1) convert single precision 32 bit floating point number to integer > and ret...

How to convert a floating point number to a 64 bit integer?
I need to convert a floating point number to a 64 bit integer (long long). How to do that in perl? Thanks. Quoth SamL <slsamliu@gmail.com>: > I need to convert a floating point number to a 64 bit integer (long > long). How to do that in perl? Thanks. You will need to specify a little more about where these numbers are coming from. Probably you want perldoc -f pack. Ben On Mar 9, 3:04=A0pm, Ben Morrow <b...@morrow.me.uk> wrote: > Quoth SamL <slsam...@gmail.com>: > > > I need to convert a floating point number to a 64 bit integer (long > > long). H...

Converting a 128 integer into 80 bit floating point
Hi asm wizards! I am adding 128 bit integer support to my compiler system, and I need to convert an int128 into a long double (80 bits floating point) I developed this macro for doing this. Do you see something wrong here? I have tested it and seems to be working but I am not 100% sure. push $64 fildl (%%rsp) leaq some_address,%%rcx ;; ;; load higher part of the 128 bit number into the FPU fildt 8(%%rcx) ;; multiply by 2^64 fscale ;; ;; load lower part of the 128 bit number fildt (%%rcx) faddp ;; cleanup the FPU stack fstpl %%st(1) ;; cleanup the stack addq $8,%%rsp Thanks in a...

Converting an image data (integer) into double precision floating point
Hi.. This is andy. Can anyone clear my doubt. How to convert the image data (which is in integer form) to double precision floating point? I tried this "B= double(B);". Its not working. Thanks in advance. Dear Andy, > Hi.. This is andy. Can anyone clear my doubt. How to convert the image data (which is in integer form) to double precision floating point? I tried this "B= double(B);". Its not working. Thanks in advance. Well, Andy, "double(B)" *is* working. But I assume, the result does not equal your expectations. Then it would be helpful, if yo...

Converting 12-bits unsigned integer to floats using matlab
Hello Does anyone have a hint on how to convert a set of 12-bites unsigne interger to float, using matlab? Matlab shows the following syntax using float a = float('single') a = float('double') a = float(TotalBits, ExpBits) // here is an example of 12-bit unsigned int x=[ 2843 2845 2851 2869 2838 2840 2853 2864]; I have tried these 3 float syntaxes , but i don't get any conversion? Any ideas on how to use them?? Thanks in advance! "Umutesi Faith" <ma_nz1@yahoo.com> wrote in message news:xYKdneCeBJAyjafZRVn-gQ@giganews.com... > > Hello > >...

How to convert a float number to integer number which will be used as the index number of an array
ind1 := valueFoo / pace; will result a float value, how to convert it to an integer? "sun shaking" <sunshaking@hotmail.com> wrote in message news:dj1vtj$22hp$1@mail.cn99.com... > > ind1 := valueFoo / pace; > will result a float value, how to convert it to an integer? > > which integer? round up or down? ?round ?trunc ?floor ?ceil Nasser ...