TypechoJoeTheme

MetMan's Blog

网站页面
文章目录

Fortran内置函数Transfer

MetMan博 主神仙
2024-12-03
/
0 评论
/
87 阅读
/
239 个字
/
百度已收录
12/03
本文最后更新于 2024年12月03日,已超过 88天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

Transfer是Fortran一个偏底层的内置函数,其功能类似C语言中Type Casting(类型转换)。

// C type casting 
void *ptr = NULL;
itn *p = (int *)ptr;

Transfer类型转换与一般的数值类型转换(比如浮点数转换为整数)不同,其转换过程中保持底层二进制位表示不变

函数语法:

RESULT = TRANSFER(SOURCE, MOLD[, SIZE])

其中SOURCE是要转换变量,可以是任何类型的标量或者数组。MOLD是希望转换的类型,可以是任何类型的标量或者数组,一般会设置成RESULT变量。

示例:

program main
  implicit none 
  integer :: a 
  real :: b
  character :: c

  a = 48
  b = transfer(a,b)
  c = transfer(a,c)
  print*, 'tranfer(1) into real is ',b
  print*, 'tranfer(1) into character is ',c
end

执行程序:

$ ifort intrinc_transfer.f90
$ ./a.out 
 tranfer(1) into real is   6.7262326E-44
 tranfer(1) into character is 0

整数48的二进制位表示为b'110000',该二进制位表示如果被当做单精度浮点类型解释的话,其浮点值结果如下图所示。

可以看出格式化输出值6.7262326E-44是实际浮点值的近似值,8位有效数字。

同时,整数48的二进制位表示恰好是字符类型值0的表示(见ASCII表),这就是为何转换成字符类型c的值是0

工具

IEEE-754 Floating Point Converter (h-schmidt.net)

朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/167/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

  1. tqymnonccc打酱油
    2024-09-27
  2. toibdpojay打酱油
    2024-09-22
  3. yvctxyevvw打酱油
    2024-09-22
  4. frezhwzwuq打酱油
    2024-09-22
登录
X
用户名
密码