Integer check
960 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Phani
2021 年 10 月 6 日
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
採用された回答
Sean de Wolski
2011 年 9 月 21 日
floor(x)==x
3 件のコメント
Jukka Kaipala
2016 年 7 月 27 日
Like it should. Inf is not considered an integer, and the same goes for NaN.
その他の回答 (4 件)
Walter Roberson
2011 年 9 月 21 日
I suggest you think about floor(), ceil(), fix(), and round()
2 件のコメント
Walter Roberson
2016 年 11 月 2 日
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
2019 年 2 月 2 日
編集済み: Fandi Bataineh
2019 年 2 月 2 日
use
floor(x)==ceil(x)
this will be true only for integers
1 件のコメント
Sivyer Ge
2019 年 2 月 24 日
Actually this will not work for type 'char'. Do you know other way to identify the difference between char and integer?
Manuel Alcazar
2019 年 9 月 16 日
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 件のコメント
per isakson
2019 年 9 月 16 日
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 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!