MATLAB的mod和rem函数是不是超过一个很大的数就不灵了?该如何解决呢?好像num2str也不行

问题描述:

MATLAB的mod和rem函数是不是超过一个很大的数就不灵了?该如何解决呢?好像num2str也不行
>> mod(17968799876541238,10)
ans =
8
>> mod(18068799876541238,10)
ans =
0
>> rem(18068799876541238,10)
ans =
0
>> rem(17968799876541238,10)
ans =
8
>> num2str(18068799876541238)
ans =
18068799876541240
>> 祝新年快乐!
1个回答 分类:综合 2014-12-09

问题解答:

我来补答
limit('18068799876541238+x mod 10',x,0)

ans =

8
再问: 谢谢! 这里需要首先定义 x 为符号变量吧? 但我的数是存在一个变量 a 中的呀? limit('a+x mod 10',x,0) ans = a
再答: syms x >> a=sym('18068799876541238') a = 18068799876541238 >> limit(mod(a+x,10),x,0) ans = 8 >> a=18068799876541238 a = 1.8069e+016 >> limit(mod(a+x,10),x,0) ans = 0 >> vpa(a,20) ans = 18068799876541240.0
再问: 不好意思,好些天没有上网了。刚试了一下,还是不能满足要求,麻烦你再帮我看看哪里不对 >> clear >> a = 18068799876541238; >> b = sym(a); >> syms x >> limit(mod(b + x,10),x,0) ans = 0 我的数a是要变化的,不是唯一的一个数字!
再答: a=18068799876541238 a = 1.8069e+016 vpa(a,20) ans = 18068799876541240.0 a如果超出了matlab能表示的最大数,他会自动截取,你要想做大数运算,最好事先把它存为符号型(syms)或者字符串型,否则就会损失精度
 
 
展开全文阅读
剩余:2000
下一页:原创8