Fortran - 想要四舍五入到小数点后一位

标签 fortran rounding gfortran netcdf

在fortran中,我必须将纬度和经度四舍五入到小数点后一位。
我正在使用 gfortran 编译器和 nint 函数,但以下不起作用:

print *, nint( 1.40 * 10. ) / 10.    ! prints 1.39999998
print *, nint( 1.49 * 10. ) / 10.    ! prints 1.50000000
在这里寻找通用和特定的解决方案。例如:
  • 我们如何显示四舍五入到一位小数的数字?
  • 我们如何在 fortran 中存储这些四舍五入的数字。在浮点变量中是不可能的,但还有其他方法吗?
  • 我们如何将这些数字写入 NetCDF?
  • 我们如何将这些数字写入 CSV 或文本文件?
  • 最佳答案

    正如其他人所说,问题是在 NetCDF 文件中使用浮点表示。使用 nco实用程序,您可以使用 scale_factor 和 add_offset 将纬度/经度更改为短整数。像这样:

    ncap2 -s 'latitude=pack(latitude, 0.1, 0); longitude=pack(longitude, 0.1, 0);' old.nc new.nc
    

    关于Fortran - 想要四舍五入到小数点后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39093294/

    相关文章:

    gdb - Fortran在gdb中打印可分配数组

    python-3.x - 在 Mac OS 10.14.5 上安装 pymc

    memory-management - 试图分配已经分配的变量

    java - 数组中的舍入单元格同时仍显示其未舍入副本的问题

    debugging - 无法运行 fortran 调试器。 Visual Studio Code

    mysql - Mysql 5.5+ 中的舍入错误?

    php - 始终将小数四舍五入到指定精度

    io - 使用 Fortran 从文件中读取包含逗号分隔 float 的行

    Fortran 查询返回内部文件

    random - 在 Fortran 77 中生成给定范围内的随机数