6 views (last 30 days)
C Zeng on 14 Mar 2013
Edited: per isakson on 16 Jan 2015
Hi, by the command of isinteger I can check if it is an integer, however, when defined at first, Matlab assume it is double precision right? So even a=3, isinteger(a) returns 0.
How to solve this problem?

per isakson on 14 Mar 2013
Edited: per isakson on 16 Jan 2015
Matlab represents integers in differnt ways:
• int8, int16, etc. see Christians answer
• with a special use of double, which is called flint. See Floating Points
I use this function to test for flint
function isf = isflint( m )
% floating double only
try
bitand( abs( m ), 1 );
isf = true;
catch me
isf = false;
end
end
I picked up the idea from a contribution by the "Pedestrian" in the FEX.
(I stripped off comments and error handling.)
C Zeng on 17 Mar 2013
Thanks, I understand it. It is good to know.

Jan on 16 Mar 2013
Joining the rounding with the checks for overflows:
function isf = isflint(m)
isf = (abs(m) <= bitmax && m == floor(m));
per isakson on 18 Mar 2013
I'll replace my cryptic isflint.

ChristianW on 14 Mar 2013
doc isinteger
isinteger(int8(3))
C Zeng on 17 Mar 2013
OK