Test if number is integer

Hey guys, I know there are various ways of testing if a number is an integer or not, but what's the best way to do it? The sort of "official" IsInteger method kinda thing.

Thanks guys!!
Who is Participating?

Commented:
Hi,

I would use "If Int(MyNumber) = MyNumber".

Cheers,

Christian
0

Commented:
ISNUMERIC is a boolean property which will return 1 if the field contains a number (not specifically an interger though) and 0 if it is not.
0

Commented:
Der. I should have read the question more closely. Christian is spot-on.
0

Author Commented:
Cool thanks Christian!! = )) thanks duttcom too!!

Hrmm duttcom I also think that true should equal to 1, but somehow in Access they set it to -1.

Why -1? I'm no sure but maybe because it doesn't want to use the positive bits. Hrmm no wait a Boolean is a value type by itself. So it takes one bit I believe. So why when we convert it to a number it uses 2 bits? One bit for sign, one bit for the value. Hrmm I'm not sure. Ok lets ask Christian! (P.S. duttcom, Christian knows EVERYTHING about programming. Hrmm and that's probably an understatement already haha. I'm very fortunate to have him help me out all the way!! = ))))   )

Christian! If you don't mind, could you share your thoughts on why true is -1 instead of 1 when I cint it? Seems like Boolean is taking 2 bits!
0

Commented:
Hi,

;-))
No, I absolutely don't know anything about programming...:-)

But this one I can answer. Here you find a type description:
http://msdn.microsoft.com/en-us/library/aa263420%28v=vs.60%29.aspx

Surprisingly a boolean value is not a bit, but a word (=16 bit). The difference between True and False is that any positive value in a memory cell is handled as "0000 0000 0000 0000" as bit code and a negative (beginning with -1) would be "1111 1111 1111 1111". That's the difference between True and False: Any bit = 0 is False, any bit = 1 is True.
That can be handled more easily when applying operations with this value and so it's faster. It is a lot more memory needed as only one bit. SQL Server for example really uses 1 bit and so the value is 1 and 0. But in result you cannot calculate with a bit value in SQL Server, you must convert it to integer first.

It would cost a lot more performance if a programming language would really only use 1 bit to hold a boolean value although possible: You must use extra logic like AND and OR to set or delete a specific bit because the minimum you can address is a byte. In C64 days when we had only 64KB memory we've done that and saved flag states inside of one byte (so we had 8 bits = 8 flags in one byte). Today memory is no issue so why should the programming language take care of it?

Cheers,

Christian
0

Author Commented:
WHAO! see duttcom whaddiya say? haha = PP i even need to re-read this and figure out the sub-concepts it covers! benefits of bitwise operations using 16 bit variable (but that's cause i'm at beginner level and soon to be familiar with these concepts!!

hahaha = )) thanks Christian!! let me digest this!! = ))
0

Commented:
Hi,

maybe I should also add that the highest bit (the one at the leftmost position in a word or long) is the one which is handled as indicator if a number is positive or negative. Think a little bit about why a long datatype can only have numbers between 0 and 2,147,483,648 and not 4,294,967,296 although it has 32 bits...;-)

Cheers,

Christian
0

Author Commented:
cool thanks Christian! i'll go through this again next week!! = ))
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.