使用移位寄存器产生斐波那契数列产生了负数,这是啥原因导致的?

2019-07-17 14:38发布

本帖最后由 像风一样飞翔! 于 2017-12-19 09:21 编辑

当我设置项数为50时,倒数第四项出现了负值。
QQ截图20171219092102.png
fbnaq.png
fbna.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
像风一样飞翔!
1楼-- · 2019-07-17 19:50
知道原因了。我是用的数据是I32,它的上限是2^32,当计算结果超过它时,就会出现负数。这个负数等于实际的结果减去2^32。如何避免呢,选择数据范围更大的的如双精度。将移位寄存器初始化数据改编为单精度浮点型就基本可以了。后面的显示数据格式也要更改。不然数据超过过2^32时,显示的就一直是2^32。

总结两点:
1.当数值较大时,数据输入格式和显示格式优先设置为单精度;
2.出现问题要主动寻找原因,并且发帖总结;

一周热门 更多>