24小时热门版块排行榜    

查看: 1872  |  回复: 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的回帖

sg47

铜虫 (小有名气)

【答案】应助回帖

计算应该是分两部,先加后减
前面一步的整数部分过长,影响小数点后的精度
不知道对不对哈
2楼2014-08-11 17:00:10
已阅   回复此楼   关注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的回帖
相关版块跳转 我要订阅楼主 远明 的主题更新
信息提示
请填处理意见