Integer check
949 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Andy
el 21 de Sept. de 2011
Comentada: Phani
el 6 de Oct. de 2021
How can i do an integer check in matlab? Say i have a number, a = 1.5, how do i check if it is integer or not? i want to use an if statement:
if non_integer(a) == true
end
so i need to know what to use for "non_integer", which would return a true or false
1 comentario
Phani
el 6 de Oct. de 2021
I think you can use rem function which throws out the remainder.
if(rem(a,1) ~=0) %checks if a is an integer with help of remainder
....
end
Respuesta aceptada
Sean de Wolski
el 21 de Sept. de 2011
floor(x)==x
3 comentarios
Jukka Kaipala
el 27 de Jul. de 2016
Like it should. Inf is not considered an integer, and the same goes for NaN.
Más respuestas (4)
Walter Roberson
el 21 de Sept. de 2011
I suggest you think about floor(), ceil(), fix(), and round()
2 comentarios
Walter Roberson
el 21 de Sept. de 2011
A test that works even for nan and inf and -inf :
mod(x,1) == 0
Walter Roberson
el 2 de Nov. de 2016
NaN == 0 is false, so in each of those cases, the result of the test would be false, indicating that the values are not integers.
But if you tried the one above, floor(inf)==inf then the result would be true, seemingly indicating that it is an integer when it is not.
Fandi Bataineh
el 2 de Feb. de 2019
Editada: Fandi Bataineh
el 2 de Feb. de 2019
use
floor(x)==ceil(x)
this will be true only for integers
1 comentario
Sivyer Ge
el 24 de Feb. de 2019
Actually this will not work for type 'char'. Do you know other way to identify the difference between char and integer?
Manuel Alcazar
el 16 de Sept. de 2019
function [bool,idx] = isint(x)
% Check whether input is integer or not
% Inf and NaN are not integers
if ~isnumeric(x)
error('Input must be a numeric, not a %s.',class(x))
end
bool = (mod(x,1) == 0);
% bool = (round(x) == floor(x)); % Other approach. Fails with Inf and
% NaN.
idx = find(bool);
% Manolín Sept-2019
end
0 comentarios
per isakson
el 16 de Sept. de 2019
function isf = isflint( m )
% floating double only
%
% http://www.mathworks.com/company/newsletters/news_notes/pdf/Fall96Cleve.pdf
% JanSimon: http://www.mathworks.se/matlabcentral/answers/67247-about-isinteger- ...
% command-confusion#answer_78914
assert( isa( m, 'double' ) && isvector( m ) ...
, 'isflint:IllegalInput' ...
, 'The input should be a double vector' )
isf = all( abs( m ) <= flintmax ) ...
&& all( floor( m ) == m ) ;
end
1 comentario
Stephen23
el 16 de Sept. de 2019
This could be trivially vectorized: why force it to return a scalar?
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!