首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MATLAB中测试整数?

如何在MATLAB中测试整数?
EN

Stack Overflow用户
提问于 2011-03-23 03:12:36
回答 4查看 66.7K关注 0票数 18

我正在写一个程序,它将计算整数的阶乘。但是,我遇到的问题是,如果有人输入一个非整数,比如1.3,我希望能够测试输入并显示"The number you have entered is not an integer"

EN

回答 4

Stack Overflow用户

发布于 2011-03-23 03:55:39

您可以使用mod函数,该函数返回除法后的余数。所有整数都可以被1整除。因此,对非整数的一个很好的测试是

代码语言:javascript
复制
integerTest=~mod(value,1);

如果value不是整数,则返回0;如果是,则返回1。然后,您可以将其用作拒绝非整数用户输入的条件。

票数 27
EN

Stack Overflow用户

发布于 2011-08-03 02:35:47

下面是另一个变体(您可以在ISIND函数:edit isind.m中看到它的用法):

代码语言:javascript
复制
integerTest = ( x == floor(x) );

在我的机器上,它比其他建议的解决方案更快:

代码语言:javascript
复制
%# create a vector of doubles, containing integers and non-integers
x = (1:100000)';                       %'
idx = ( rand(size(x)) < 0.5 );
x(idx) = x(idx) + rand(sum(idx),1);

%# test for integers
tic, q1 = ~mod(x, 1); toc
tic, q2 = x==double(uint64(x)); toc
tic, q3 = x==floor(x); toc

%# compare results
assert( isequal(q1,q2,q3) )

计时:

代码语言:javascript
复制
Elapsed time is 0.012253 seconds.
Elapsed time is 0.014201 seconds.
Elapsed time is 0.005665 seconds.
票数 22
EN

Stack Overflow用户

发布于 2011-03-23 03:14:53

assert(isnumeric(input) && round(input) == input, 'That number is not an integer.')

您也可以很容易地添加其他检查(如正性检查)。

使用isinteger编辑。感谢@SolarStatistics,我没有注意到他们添加了这个功能。再次编辑回原始答案,因为isinteger不合适(请参阅下面的注释)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5396551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档