浮点数

您所在的位置:网站首页 什么是单精度浮点型 浮点数

浮点数

2024-07-16 21:12| 来源: 网络整理| 查看: 265

浮点数¶

浮点数的默认表示是使用单精度(通常是 32 位/4 字节)。对于大多数应用来说,需要更高的精度。为此,可以自定义种类参数。定义种类参数的推荐方法是使用

integer, parameter :: dp = selected_real_kind(15)

对于许多目的,直接从像这里这样的文字推断出 种类参数就足够了

integer, parameter :: dp = kind(0.0d0)

或从 iso_fortran_env 模块重命名导入的种类参数

use, intrinsic :: iso_fortran_env, only : dp => real64

有关种类参数的一些有见地的想法,请参阅 Doctor Fortran 需要所有种类。

建议构建一个核心模块来定义种类参数,并在必要时引入它们。 在此,给出此类模块的示例

!> Numerical storage size parameters for real and integer values module kind_parameter implicit none public !> Single precision real numbers, 6 digits, range 10⁻³⁷ to 10³⁷-1; 32 bits integer, parameter :: sp = selected_real_kind(6, 37) !> Double precision real numbers, 15 digits, range 10⁻³⁰⁷ to 10³⁰⁷-1; 64 bits integer, parameter :: dp = selected_real_kind(15, 307) !> Quadruple precision real numbers, 33 digits, range 10⁻⁴⁹³¹ to 10⁴⁹³¹-1; 128 bits integer, parameter :: qp = selected_real_kind(33, 4931) !> Char length for integers, range -2⁷ to 2⁷-1; 8 bits integer, parameter :: i1 = selected_int_kind(2) !> Short length for integers, range -2¹⁵ to 2¹⁵-1; 16 bits integer, parameter :: i2 = selected_int_kind(4) !> Length of default integers, range -2³¹ to 2³¹-1; 32 bits integer, parameter :: i4 = selected_int_kind(9) !> Long length for integers, range -2⁶³ to 2⁶³-1; 64 bits integer, parameter :: i8 = selected_int_kind(18) end module kind_parameter

声明浮点常量,应始终写出种类参数后缀:

real(dp) :: a, b, c a = 1.0_dp b = 3.5_dp c = 1.34e8_dp

将整数赋值给浮点数是安全的,不会丢失精度 :

real(dp) :: a a = 3

为了强制使用浮点除法(与整数除法3/4==0不同),可以通过以下方式将整数转换为浮点数:

real(dp) :: a a = real(3, dp) / 4 ! 'a' is equal to 0.75_dp

或者简单地用乘以1.0_dp来分隔整数除法

real(dp) :: a a = 3 * 1.0_dp / 4 ! 'a' is equal to 0.75_dp

要在不损失精度的情况下打印浮点数,请使用无限格式说明符 (g0) 或指数表示 (es24.16e3),这将为你提供 17 位有效数字的打印输出。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3