首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Fortran中将逻辑类型转换为双精度

在Fortran中将逻辑类型转换为双精度
EN

Stack Overflow用户
提问于 2013-02-25 06:29:03
回答 3查看 6.5K关注 0票数 6

我正在寻找一种可以在ifort和gfortran中使用的将逻辑类型变量转换为真实类型的有效方法。以下代码在ifort中有效,但在gfortran中无效:

代码语言:javascript
复制
logical :: a
real :: b
a = .true.
b = dble(a)

gfortran中抛出的错误是

代码语言:javascript
复制
b = dble(a)
         1
Error: 'a' argument of 'dble' intrinsic at (1) must be a numeric type

显然,.true。应该映射到1.d0和.false。到0.d0。做这件事的最好方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2013-02-25 07:15:16

除了编写一个函数来处理这个问题之外,您还可以直接使用内部的merge函数:b = merge(1.d0, 0.d0, a)。或者,您可以编写一个定义的赋值子例程来执行此操作,这样您只需输入b = a即可。

票数 11
EN

Stack Overflow用户

发布于 2015-04-02 04:34:03

在gfortran中,我为该类型的作业使用了内在的传输。假设有一个整数变量my_int,那么:

代码语言:javascript
复制
    my_int = transfer(.false.,my_int)

my_int的结果如预期的那样为0。

票数 0
EN

Stack Overflow用户

发布于 2020-10-02 00:36:41

注意,TRANSFER(.true.,1)使用Gfortran正确返回值1(错误?)在当前版本的英特尔与Portland编译器中,值为-1。有趣的是,TRANSFER(-1,logical)在后两个编译器中返回TRUE,而在Gfortran中抛出语法错误。

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

https://stackoverflow.com/questions/15057429

复制
相关文章

相似问题

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