在 Fortran 95 中将任意浮点字符串转换为实数

2023-11-24

在 fortran 中是否有任何简单的方法可以将任意浮点字符串转换为实数?想想类似的事情strtod?问题在于READ声明是所有浮点格式编辑描述符都需要显式宽度。到目前为止,我做出的最好的解决方法是这样的:

pure function strtod(s)
  real(kind=8) :: strtod
  character(len=*), intent(in) :: s
  character(len=32) :: fmt
  integer :: dot
  dot = index(s, ".")
  if(dot < 1) then
     write(fmt, '("(F",I0,".0)")'), len_trim(s)
  else
     write(fmt, '("(F",I0,".",I0,")")'), len_trim(s), len_trim(s)-dot
  end if
  read(s,fmt), strtod
end function strtod

但我想知道我是否遗漏了一些东西,可能有更好的方法吗?


我肯定错过了什么。使用列表定向有什么问题?

[luser@cromer stackoverflow]$ cat char2.f90
Program char2

  Implicit None

  Integer, Parameter :: wp = Selected_real_kind( 12, 70 )

  Real( wp ) :: a

  Character( Len = 32 ) :: s

  s = '0.'
  Read( s, * ) a
  Write( *, * ) a

  s = '1e10'
  Read( s, * ) a
  Write( *, * ) a

End Program char2
[luser@cromer stackoverflow]$ nagfor -C=all -C=undefined char2.f90
NAG Fortran Compiler Release 5.3.1 pre-release(904)
[NAG Fortran Compiler normal termination]
[luser@cromer stackoverflow]$ ./a.out
   0.0000000000000000
   1.0000000000000000E+10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Fortran 95 中将任意浮点字符串转换为实数 的相关文章

  • C++ 和 Fortran 混合链接问题

    我在网上做了一些搜索 但我找不到如何从 Linux 编译简单的 C 和 Fortran 代码 我需要让它变得复杂 但我只需要知道如何从一个简单的例子开始 我的C 代码是这样的 include
  • 为什么我必须在 Fortran 中隐式指定函数的双精度返回值?

    我是 Fortran 新手 我正在尝试common堵塞 我的代码很简单 program main implicit double precision p real 8 x y common yvalue y x 3d0 y 3d0 prin
  • 大多数编译器都会优化 MATMUL(TRANSPOSE(A),B) 吗?

    In a Fortran program I need to compute several expressions like M v MT v MT M M MT etc Here M and v are 2D and 1D arrays
  • SELECT TYPE 构造中的多态性分配

    我试图定义一个分配不同类型数组的子例程 这是代码的简化版本 subroutine Allocation1 Vec class allocatable intent out Vec select type Vec type is real 8
  • 循环变量文件名[重复]

    这个问题在这里已经有答案了 我正在使用 Fortran 对分成许多文件的庞大数据集进行计算 文件的名称是 maltoLyo12per reimage set1 traj maltoLyo12per reimage set2 traj mal
  • 在 Fortran 90 中,是否必须事先声明数组维度?

    是否有必要在任何其他代码之前声明数组维度 例如 我编写了以下简化的示例代码 PROGRAM mytest IMPLICIT NONE INTEGER i j k mysum Let array c be a k by k 2 array D
  • 将数据写入列中的文件 (Fortran)

    我需要在 Fortran 90 中写入一些数据到文件中 我应该如何使用WRITE input将值分组为columns WRITE总是放一个new line每次通话后 这就是问题所在 代码示例 open unit 4 file generat
  • 使用 Visual Studio 2013 和 Intel Fortran 编译混合 C++/C 代码

    我正在尝试编译一个简单的 C Fortran 混合程序 但存在链接问题 我使用的是Visual Studio 2013 Ultimate和Intel Visual Fortran Compiler XE 14 该程序非常简单 是从网上的某个
  • Fortran90 数组将空白值读取为 null

    我正在读取外部文本文件的数据 30 行 7 列 每行用 分隔 我缺少表示为 的值 当我将数据读入二维数组时 缺失值被 0 00 替换 但数据中也有 0 00 值 当我计算平均值时 计数 项目数 n 显示为计数 缺失值的数量 我如何动态选择缺
  • 编译错误:无法打开模块文件

    我有这个代码 PROGRAM xfit driver for routine fit USE nrtype USE nrutil USE nr USE ran state ONLY ran seed IMPLICIT NONE INTEGE
  • Fortran 03/08(gfortran 编译器)中使用无限多态类型进行数组操作

    我想通过以下方式实现有用的数组操作 添加元素 删除元素 通过可分配 指针 二叉树结构实现不同的实现 class 特征 无限多态性 我使用 gfortran 5 0 应该可以处理这样的功能 我需要它 以免为我使用的每种类型重复相同的代码 这应
  • Fortran 函数:指针作为实际参数,目标作为形式

    我正在尝试破译 Fortran 代码 它将指向函数的指针作为实际参数传递 而形式参数则是目标 它在主程序中定义并分配一个 globalDATA 类型的指针 然后调用一个传递该指针的函数 module dataGLOBAL type glob
  • fortran中双引号和单引号的区别?

    我刚刚开始使用 Fortran 对双引号和单引号的使用感到困惑 它们是等价的 它们的用法没有区别 您可以使用它来打印引号字符之一 print print 首先打印 进而 注意 您还可以在一行中使用两个引号字符来打印一个 print prin
  • 从 Fortran 字符串中提取单个字符

    我需要一个程序将基数 a 转换为基数 b 其中基数 a 和 b 可以是从 2 到 36 我的想法是使用字符串作为数字 作为中介转换为基数 10 然后从基数 10 转换为基数 b 由于我是 Fortran 新手 我不太理解函数和子字符串 现在
  • FORTRAN 写()

    在开始之前 我必须先声明一下 我是 FORTRAN 的新手 我正在维护 1978 年的一段遗留代码 它的目的是从文件中读取一些数据值 处理这些值 然后将处理后的值输出到另一个文本文件 给出以下 FORTRAN 代码 INTEGER NM S
  • gfortran 未定义的引用

    我正在尝试编译一个依赖很多东西的程序 我使用并修改了提供的 makefile 来代表我的计算机设置 但在编译的最后一步中我不断收到许多未定义的引用 导致问题的命令行是 gfortran o cosmomc ParamNames o Matr
  • 关于for循环中的fortran continue语句的问题

    我正在分析 Fortran 代码并有一个简单的问题 我想知道下面代码中 100 和 200 处的 继续 语句的作用 它会增加 i 和 j 计数器吗 如果是这样的话 不会if not flg 那么条件包含flg循环中 flg 的 最后一个值
  • 如何调用模块中子程序内部的函数?

    我有一个包含子例程的模块 该子例程又包含一个函数 我说use themodule在我的主程序中 我可以call thesubroutine 但是如何访问子例程中包含的函数呢 代码如下所示 module useful integer para
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 使用 MacLaurin 展开的 Fortran Sine 函数的微小差异

    我正在用 Fortran 创建一个程序 它接受以弧度表示的 sin x 的 x 然后是要计算的项数 这是我的程序 Sine value using MacLaurin series program SineApprox implicit n

随机推荐

  • UIPanGestureRecognizer 起点已关闭

    我有一个 UIView 它附加了一个 UIPanGestureRecognizer 手势工作正常 只是起点不是平移第一次开始的位置 它通常在 x 和 y 坐标中偏离 5 到 15 个像素 不幸的是 方差不是一致并且似乎与平移运动发生的速度有
  • 使用 php 向后读取文件行(fgets)

    我有一个txt文件 我想向后阅读 目前我正在使用这个 fh fopen myfile txt r while line fgets fh echo line br 这将输出我文件中的所有行 我想从下到上阅读这些行 有办法做到吗 第一种方式
  • C# 服务:如何获取用户配置文件文件夹路径

    我需要从 C windows 服务中获取用户目录 比如 C Users myusername 理想情况下 我希望有漫游路径 就像 C Users myusername AppData Roaming 当我在控制台程序中使用以下内容时 我得到
  • 匹配结束 HTML 标签的正则表达式

    我正在编写一个小型 Python 脚本来清理 HTML 文档 它的工作原理是接受要保留的标签列表 然后解析 HTML 代码 丢弃不在列表中的标签我一直在使用正则表达式来做到这一点 并且我已经能够匹配开始标签和自关闭标签但不关闭标签 我一直在
  • 如何自动生成日期属性为 Date 而不是 NSDate 的 NSManagedObject 子类?

    我目前正在将我的项目更新到 Swift 3 并将所有 NSDate 方法和扩展移至 Date 以便在应用程序中保持标准 问题是我使用 Xcode 自动生成 NSManagedObject 子类 并且它生成日期属性为 NSDate 而不是 D
  • Spring:如何在运行时更改接口实现

    作为一名 Java 开发人员 我经常需要在接口的不同实现之间进行选择 有时这种选择是可以做到的once 而有时我需要不同的实现来响应我的程序收到的不同输入 换句话说 我需要能够change运行时执行 这可以通过帮助程序对象轻松实现 该对象将
  • 根据行数据更新 DatagridView 单元格背景颜色

    您好 我有一个 DatagridView 我希望它根据每行中的数据更改背景颜色 Ex 人 1 人 2 人 3 100 200 150 300 100 50 在第一行中 我希望它使 100 具有红色背景颜色和 200 绿色 或者 最低值 红色
  • Python 中连接字符串的最有效方法

    在问这个问题时 我正在使用Python 3 8 当我说高效时 我只是指字符串连接的速度 或者用更专业的术语来说 我问的是时间复杂度 而不是考虑空间复杂度 目前我能想到的唯一方法是以下 3 种 a start b end Method 1 r
  • 如何从 .cab 文件安装 mscomct2.ocx 文件(Excel 用户表单和 VBA)

    我有一个 Excel 电子表格 其中包含使用日历控件的用户表单 它在我的机器上运行良好 但其他人无法使用它 因为他们缺少 mscomct2 ocx 文件 我找到了下载地址 http support microsoft com kb 2973
  • Angular2将数据映射为特定对象类型

    我根据 Angular2 教程创建了一个非常简单的应用程序 首先 我有一个非常简单的 Book 模型 book model export class Book public data constructor param id param t
  • 沿二维图像切片进行插值

    我有一套100相同大小的二维图像切片 我使用 MATLAB 将它们堆叠起来以创建体积数据 虽然二维切片的大小为 480x488 像素 但图像堆叠的方向不够宽 无法在投影时以不同方向可视化体积 我需要沿着切片进行插值以增加可视化的大小 有人可
  • Pandas 将具有 unix 时间戳(以毫秒为单位)的行转换为日期时间

    我需要处理大量 CSV 文件 其中时间戳始终是表示 UNIX 时间戳 以毫秒为单位 的字符串 我还找不到有效修改这些列的方法 这是我想到的 但是这当然只复制了列 我必须以某种方式将它放回原始数据集 我确信在创建时可以完成DataFrame
  • 不同组的不同子布局 ExpandableListView

    我在尝试执行此操作时遇到了问题 我似乎无法做到这一点 我想控制每个父母 该父母的孩子 ExpandableListView一直让我头疼 包评论 public class CommentsExpandableListAdapter exten
  • 对整数的多维向量进行排序?

    不管你信不信 当我搜索这个时 我想出了什么 如何对多维数据进行排序vector of int是在其中一根 柱子 旁边吗 提前谢谢了 C res mysql perform query conn SELECT column1 column2
  • 无法使用 rbenv 安装 RMagick

    我在 Ubuntu 10 04 服务器上使用 rbenv 并且已经安装了 ImageMagick 但无法成功安装 RMagick 我收到以下错误消息 Can t install RMagick 2 13 1 Can t find Magic
  • Microsoft Edge 中的集成 Windows 身份验证

    我正在尝试在 Edge 上实施集成 Windows 身份验证 但它总是提示我输入凭据 而集成 Windows 身份验证适用于 IE Chrome 和 Firefox 我尝试在安全选项中将该站点添加到本地 Intranet 站点并启用自动登录
  • 如何等待所有任务完成而不阻塞 UI 线程?

    在下面的代码中 我在处理任务之前禁用按钮 并希望在所有任务完成后启用它 List
  • 是否有经过充分研究的优化来找到穿过图形中每个加权边的最短路径?

    我一直在四处寻找 但似乎每个人最喜欢的问题都有一个稍微不同的情况 TSP 哈密顿量 欧拉等 我有一个图 由 V 顶点 和 E 边 表示 其中每条边是无向的 并且有一定的遍历成本 我想以最小的成本遍历每一条边 并可能重复 直观上 这个问题感觉
  • 在android中显示TextView而不是ImageView

    我想在图像视图上显示文本 我按照 Alesqui 的建议这样做 Android 文字覆盖图像 The preview in Android studio looks fine 但我的实际结果看起来像这样 上面有不必要的文本 我必须在执行期间
  • 在 Fortran 95 中将任意浮点字符串转换为实数

    在 fortran 中是否有任何简单的方法可以将任意浮点字符串转换为实数 想想类似的事情strtod 问题在于READ声明是所有浮点格式编辑描述符都需要显式宽度 到目前为止 我做出的最好的解决方法是这样的 pure function str