kkluv 发表于 2024-6-29 16:06:34

Fortran95 彭老师教材例题

这照着书输入怎么还不一样呢,1+0.1还能算错。。。。

楚香饭 发表于 2024-6-29 16:26:14

本帖最后由 楚香饭 于 2024-6-29 16:28 编辑

浮点数有误差很正常。
就像你在计算器上输入 1 除以3 再乘以3,很可能是 0.99999999 一样。
计算机普遍采用二进制,而二进制不能精确的表达 十分之一(0.1),正如十进制不能准确的表达 三分之一 (0.333333333....) 一样

kkluv 发表于 2024-6-29 16:58:46

楚香饭 发表于 2024-6-29 16:26
浮点数有误差很正常。
就像你在计算器上输入 1 除以3 再乘以3,很可能是 0.99999999 一样。
计算机普遍采用 ...

厉害 一下子明白了那我想和教材例题一样输出1.100000的话,有没有方法可以实现呢

楚香饭 发表于 2024-6-29 19:27:39

对单精度 real 来说,有效精度在 6.9 位左右,不到 7 位。
教材用的是 compaq visual fortran。你用的是 gfortran
前者对表控格式默认输出 6 位有效数字,而后者默认更多位。

你只需要用格式输出,只输出6位有效数字就可以“避开”这个问题。

write(*,'(f7.5,"+",f7.5,"=",f7.5)') a , b , a+b
页: [1]
查看完整版本: Fortran95 彭老师教材例题