首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"real*8“是什么意思?

"real*8“是什么意思?
EN

Stack Overflow用户
提问于 2012-05-10 01:08:45
回答 3查看 64.9K关注 0票数 33

用Fortran90编写的程序手册上写道:“所有实数变量和参数都是以64位精度(即real*8)指定的。”

根据Wikipedia的说法,单精度对应于32位精度,而双精度对应于64位精度,因此显然该程序使用双精度。

但是real*8是什么意思呢?

我以为8的意思是小数点后跟8位数字。然而,Wikipedia似乎说单精度通常提供6-9位数字,而double precision通常提供15-17位数字。这是否意味着“64位精度”语句与real*8不一致?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-10 01:10:49

8表示数据类型使用的字节数。

因此,32位整数是沿着相同的线进行integer*4的。

快速搜索找到了this guide to Fortran data types,其中包括:

" real *4“语句指定变量名为单精度4字节实数,其精度为7位,幅值范围为10,范围从-38到+38。在几乎所有的32位计算机中,"real“语句都与"real*4”语句相同。

" real *8“语句指定变量名为双精度8字节实数,其精度为15位,幅值范围为10,范围从-308到+308。在几乎所有32位计算机中,“双精度”语句都与"real*8“语句相同。

票数 35
EN

Stack Overflow用户

发布于 2012-05-10 02:03:07

在Fortran中,现在至少有4种方法可以指定精度。

正如前面所回答的,real*8指定了字节数。它有点过时了,但应该是安全的。

新的方法是使用“种类”。人们应该使用内部函数来获得具有所需精度的类型。通过特定的数值指定种类是有风险的,因为不同的编译器使用不同的值。

另一种方法是使用ISO_C_Binding的命名类型。This question讨论了整数的种类系统--它与实数非常相似。

票数 26
EN

Stack Overflow用户

发布于 2012-05-10 01:45:39

如果与TYPE而不是CHARACTER一起使用,星形符号(就像TYPE*n所称的)是一种非标准的Fortran结构。

如果应用于字符类型,它将创建n字符的数组(或n字符的字符串)。

如果应用于其他类型,则以字节为单位指定存储大小。在引入了类型类型概念的Fortran 90+中,应该不惜一切代价避免这种情况。指定存储大小将创建不可移植的应用程序。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10520819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档