|
对单精度 real 来说,有效精度在 6.9 位左右,不到 7 位。 教材用的是 compaq visual fortran。你用的是 gfortran 前者对表控格式默认输出 6 位有效数字,而后者默认更多位。 你只需要用格式输出,只输出6位有效数字就可以“避开”这个问题。 write(*,'(f7.5,"+",f7.5,"=",f7.5)') a , b , a+b |
楚香饭 发表于 2024-6-29 16:26 厉害 一下子明白了 那我想和教材例题一样输出1.100000的话,有没有方法可以实现呢 |
本帖最后由 楚香饭 于 2024-6-29 16:28 编辑 浮点数有误差很正常。 就像你在计算器上输入 1 除以3 再乘以3,很可能是 0.99999999 一样。 计算机普遍采用二进制,而二进制不能精确的表达 十分之一(0.1),正如十进制不能准确的表达 三分之一 (0.333333333....) 一样 |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-12-23 21:38