关于C++的精度问题与matlab的比较

编写程序时,循环过程中有一矩阵公式,使用matlab写时,是可以参与运算的,最后得出的迭代结果也是会变化的,但是用C++编写时,发现得出的结果每一次基本没有发生变化,然后该矩阵中都是分数或者是0,分母都很大,但是C++的精度不是要比matlab的精度要好一些吗?为什么此时的结果会基本不变呢?

4个回答

cpp使用的是float或者double吗?是不是cpp的计算公式会不会有计算正确

xiaodianer1111
JYCM 用的是double,使用矩阵计算的时候使用的eigen库,该矩阵每次循环时我输出来看了,竟然基本都是0的矩阵,但是在matlab中能让值有变化,计算公式也核对过了,照理来讲,C++的精度不该比matlab差啊
5 年多之前 回复

C++里头用double,另外,做矩阵运算,有可以涉及到复数,所以还要自己写复数类的运算

Evankaka
Evankaka 回复JYCM: 你进行矩阵运算之前,要先把所有数都转换成double,你这样做了没
5 年多之前 回复
xiaodianer1111
JYCM 我是用的eigen库,直接矩阵运算了,很奇怪这一矩阵输出来的都基本是0 了
5 年多之前 回复

要注意一个问题,c++里面,浮点数和整数乘除,会转换为整除和整乘。
比如
int x = 3;
int d = 11.8;
d = d / x; // d = 3.000

jack960330
欧阳春晖 回复JYCM: 你被误导了
5 年多之前 回复
jack960330
欧阳春晖 你这算么例子。。int d=11.8 d/x 你确定是整数和浮点数除法?你11.8直接转成11 放int了,这里存在自动类型转换
5 年多之前 回复
xiaodianer1111
JYCM 不好意思刚才理解错了,你的意思是精度上直接忽略掉了,由于分母过大直接接近0了?但是都设的doule类型的
5 年多之前 回复
xiaodianer1111
JYCM 这个地方我注意到了,还是很感谢
5 年多之前 回复

楼主,我不清楚你什么问题,请你将问题详细信息描述清楚,你说的很大是多大?所谓都是分数或者0又是什么情况,你原来正确的答案 多少,等等情况必须讲清楚我们才能帮你分析原因

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐