24小时热门版块排行榜    

查看: 1890  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

远明

银虫 (小有名气)

[求助] matlab double型精度与实例不符

format long
0.999823930783478+2455630.50000000-2451545.00000000

既然double型的有效位数是16位(还是15?),那么上式结果至少能精确到:
4086.49982393078 ...
然而实际运行结果却是:
4086.49982393067 ...
在c++里面也有完全相同的“异常”。请问这是怎么回事儿呢?

matlab double型精度与实例不符
matlab double 运算实例.png
回复此楼
专注与坚持。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dk1013

木虫 (正式写手)

引用回帖:
2楼: Originally posted by sg47 at 2014-08-11 17:00:10
计算应该是分两部,先加后减
前面一步的整数部分过长,影响小数点后的精度
不知道对不对哈

同意。
很大的一个浮点数加很小的一个浮点数,在极端情况会出现大数吃小数的情况。
这里的话,如果先做这个加法会损失一些小小数点的。
到得还来别无事 庐山烟雨浙江潮
3楼2014-08-11 17:31:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

sg47

铜虫 (小有名气)

【答案】应助回帖

计算应该是分两部,先加后减
前面一步的整数部分过长,影响小数点后的精度
不知道对不对哈
2楼2014-08-11 17:00:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见