这个问题适用于 Fortran,更准确地说是编译器 gfortran。
我需要知道如何将实数(种类= 8)数组转换为实数(种类= 4)数组,以便保留数组每个条目中的所有合理数字。
显然,从 kind=8 到 kind=4 的类型转换意味着信息丢失。因此,我正在寻找的是丢失尽可能多的信息的正确方法 - 但不是更多。
这个问题适用于 Fortran,更准确地说是编译器 gfortran。
我需要知道如何将实数(种类= 8)数组转换为实数(种类= 4)数组,以便保留数组每个条目中的所有合理数字。
显然,从 kind=8 到 kind=4 的类型转换意味着信息丢失。因此,我正在寻找的是丢失尽可能多的信息的正确方法 - 但不是更多。
到实数的转换是使用 real()
内在函数完成的。可选的 kind=
参数指定结果的类型。
如果您确实需要结果为 kind 4,则使用
real(x,4)
你可以对结果做任何你想做的事情。例如,将其分配给一个变量。
您将获得与隐式转换相同的结果,但显式转换显示了意图,并且还避免了某些有关可能损失精度的编译器警告。
一如既往:
最好为您的种类参数使用命名常量,以便您可以轻松地在任何地方更改它。
使用种类数字作为字面常量,如 4 或 8 是不可移植的,而且非常丑陋。 Fortran 90 kind parameter