作者endpeople (你要幸福ㄛ...)
看板Fortran
标题[问题] 关於最大有效位数...
时间Thu Apr 15 20:44:07 2010
各位好...我用的是CVF6.5版本...
最近遇到了一个运算上的问题...
Fortran的最大有效位数为16位数...
假设今天有一个很大的整数其位数为10^16...
乘上一个介於0~1之间的小数(精确到小数点後16位数)...
那麽结果的有效位数最多只能精确到个位数...小数点後的值就会有误差...
如果那很大的整数再大於10^16...
结果的精确位数可能只到十位数甚至只有百位数...
例如:a=10d16 , b=3.d0 , c=7.d0
d=b/c=0.42857142857142854763807...
^(有效精确位数)
e=a*d=42857142857142856.00000000
^(有效精确位数)
即使事先将那很大的值取log转换运算...
但最後再取回exp後一样只能精确到个位数(甚至更差)...
不知各位高手...这样的问题有没有办法解决呢??
谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.13.113.185
※ 编辑: endpeople 来自: 163.13.113.185 (04/15 20:47)
1F:→ motoman:原po要不要贴部份code来讨论看看? 我认为是资料型态混合的 04/15 21:07
2F:→ motoman:运算造成的错误 讲简单点 单精度和双精度一起加减乘除 04/15 21:08
3F:→ motoman:後面的值就会有问题 因为两者的资料储存方式不同 04/15 21:09
4F:→ motoman:sorry 没注意到原po有写@@ 双精度的确是准到15位 04/15 21:18
5F:→ motoman:那样是正常的 (上面三行推文当我没说 鬼打墙) 04/15 21:21
7F:→ latinboy: 使用浮点数最最基本的观念 by 冼镜光 04/15 22:08
8F:→ latinboy:要做数值的人 上一篇文章先读到懂 问题就少很多 :) 04/15 22:09
9F:→ endpeople:那篇文章我前几天有看过了...似乎无法解决我的问题... 04/15 22:49
11F:→ perceval:High-Precision Software 04/16 00:23
12F:推 latinboy: 不知道你是做什麽问题需要这麽准 XD 算PI吗??? 04/16 20:49
13F:→ latinboy: 如果有效位数只要16~20 你可以试着用64bits整数换算 04/16 20:50
14F:→ latinboy: 如果需要很多位数 试试大数运算吧 04/16 20:50