Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.


Go Back   Vista Forums > Misc Newsgroups > VB Script

RB

Vista - Function Int fails ?

Reply
 
09-26-2008   #1
massimoxr1


 
 

Function Int fails ?

Hi to all,
this is the code in my file test.vbs :

Dim Result

Result = (2170.12 / 9.08) ' is 239
msgbox("(2170.12 / 9.08) =**" & Result & "**")
msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok

Result = (2179.2 / 9.08) ' is 240
msgbox("(2179.2 / 9.08) =**" & Result & "**")
msgbox("Int(Result) =**" & Int(Result) & "**") ' Error! Why 239 ?

Result = (2188.28 / 9.08) ' is 241
msgbox("(2188.28 / 9.08) =**" & Result & "**")
msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok


Any ideas?
Thanks!

My System SpecsSystem Spec
09-26-2008   #2
mayayana


 
 

Re: Function Int fails ?

Int rounds the number. If you switch the
slashes to backslashes you'll get yet another
result. That's what's supposed to happen. An
integer is a whole number.
Quote:

> this is the code in my file test.vbs :
>
> Dim Result
>
> Result = (2170.12 / 9.08) ' is 239
> msgbox("(2170.12 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok
>
> Result = (2179.2 / 9.08) ' is 240
> msgbox("(2179.2 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Error! Why 239 ?
>
> Result = (2188.28 / 9.08) ' is 241
> msgbox("(2188.28 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok
>
>
> Any ideas?
> Thanks!

My System SpecsSystem Spec
09-26-2008   #3
Richard Mueller [MVP]


 
 

Re: Function Int fails ?


<massimoxr1@xxxxxx> wrote in message
news:ac348705-c661-43f1-89ce-96f49507f88a@xxxxxx
Quote:

> Hi to all,
> this is the code in my file test.vbs :
>
> Dim Result
>
> Result = (2170.12 / 9.08) ' is 239
> msgbox("(2170.12 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok
>
> Result = (2179.2 / 9.08) ' is 240
> msgbox("(2179.2 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Error! Why 239 ?
>
> Result = (2188.28 / 9.08) ' is 241
> msgbox("(2188.28 / 9.08) =**" & Result & "**")
> msgbox("Int(Result) =**" & Int(Result) & "**") ' Ok
>
>
> Any ideas?
> Thanks!
The behaviour is expected. All math internally is in binary and the results
is often inexact. Internally, the result is closer to 239.9999999999999.
Note that Int((2179.2 / 9.08) + .0000000000001) is 240.

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


My System SpecsSystem Spec
09-26-2008   #4
massimoxr1


 
 

Re: Function Int fails ?

ok, and what about the function CInt ?

Result = (2179.2 / 9.08) ' is 240
msgbox("(2179.2 / 9.08) =**" & Result & "**")
msgbox("CInt(Result) =**" & CInt(Result) & "**") 'returs 240


CInt seems to return the right value.
My System SpecsSystem Spec
09-26-2008   #5
ekkehard.horner


 
 

Re: Function Int fails ?

massimoxr1@xxxxxx schrieb:
Quote:

> ok, and what about the function CInt ?
>
> Result = (2179.2 / 9.08) ' is 240
> msgbox("(2179.2 / 9.08) =**" & Result & "**")
> msgbox("CInt(Result) =**" & CInt(Result) & "**") 'returs 240
>
>
> CInt seems to return the right value.
Straight from the Docs (CInt Function):

CInt differs from the Fix and Int functions, which truncate,
rather than round, the fractional part of a number. When the
fractional part is exactly 0.5, the CInt function always rounds
it to the nearest even number. For example, 0.5 rounds to 0,
and 1.5 rounds to 2.
My System SpecsSystem Spec
09-26-2008   #6
Richard Mueller [MVP]


 
 

Re: Function Int fails ?


<massimoxr1@xxxxxx> wrote in message
news:4e4f6b9d-5adc-439a-8dac-3b4de1686c0b@xxxxxx
Quote:

> ok, and what about the function CInt ?
>
> Result = (2179.2 / 9.08) ' is 240
> msgbox("(2179.2 / 9.08) =**" & Result & "**")
> msgbox("CInt(Result) =**" & CInt(Result) & "**") 'returs 240
>
>
> CInt seems to return the right value.
CInt rounds, while Int (and also Fix) does not.

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


My System SpecsSystem Spec
09-26-2008   #7
Richard Mueller [MVP]


 
 

Re: Function Int fails ?


"Richard Mueller [MVP]" <rlmueller-nospam@xxxxxx> wrote in
message news:uX0YMH$HJHA.4936@xxxxxx
Quote:

>
> <massimoxr1@xxxxxx> wrote in message
> news:4e4f6b9d-5adc-439a-8dac-3b4de1686c0b@xxxxxx
Quote:

>> ok, and what about the function CInt ?
>>
>> Result = (2179.2 / 9.08) ' is 240
>> msgbox("(2179.2 / 9.08) =**" & Result & "**")
>> msgbox("CInt(Result) =**" & CInt(Result) & "**") 'returs 240
>>
>>
>> CInt seems to return the right value.
>
> CInt rounds, while Int (and also Fix) does not.
>
> --
> Richard Mueller
> MVP Directory Services
> Hilltop Lab - http://www.rlmueller.net
> --
>
>
Also, CInt can only handle values between -32,768.5 and 32,767.5 (the result
must be datatype integer). The Int and Fix functions can handle any numeric
values.

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


My System SpecsSystem Spec
Reply

RB


Thread Tools


Similar Threads for: Function Int fails ?
Thread Forum
function to delete a function PowerShell
Complete PC Backup fails, restore fails differently! Vista performance & maintenance
Contact List Fails to Function Vista mail
Windows Explorer fails and fails and fails... Vista General
BUG: Redirecting function contents to a file truncates function lines at the width of the console PowerShell


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd