你好,我是使用Matlab 7.10.0 (R2010a)。我需要使用int64 mod函数数据类型。但它没有锅。你能帮我吗?
2视图(30天)
显示旧的评论
答案(1)
Guillaume
2015年4月17日
编辑:Guillaume
2015年4月17日
matlab的较新版本
国防部
实现
int64
,也许是时候升级。
一个= intmax (“int64”);%为例
%先导入bigInteger转换使用静态方法的返回对象的值int64先导入bigInteger:(长)
bi = javaMethod (返回对象的值的,“java.math.BigInteger”,)
先导入BigInteger。%模操作需要另一个
m = bi.mod (javaMethod (返回对象的值的,“java.math.BigInteger”48));
%不幸matlab将长值返回“longValue”方法成双
%以下可能导致丧失精度
结果= int64 (m.longValue)
%,保证没有精度损失,渡过字节数组表达的:
巴尔= m.toByteArray;
[~,~,字节顺序]=计算机;%注意toByteArray大端字节总是返回字节
如果字节顺序= =“L”%如果机器是小端字节序
巴尔= flipud (barr);%翻转的字节
结束
如果元素个数(barr) < 8% toByteArray只返回必要尽可能多的字节
巴尔(8 - 1)= 0;%因此扩大int64所需的8
结束
结果=定型(int8 (barr),“int64”)
按照上面的评论中,最简单的方法得到一个int64(长)价值先导入BigInteger是通过的
longValue
方法。不幸的是,matlab将长,它返回转换成双,造成的精度损失大整数。解决方法是让字节表示和铸型的字节数组int64。
System.Math.DivRem (intmax (“int64”),48)