stdlib_str2num
模块提供将字符转换为数值类型的过程和接口。当前支持:integer
和 real
。 (规范)
此代码改编自 https://github.com/jalvesz/Fortran-String-to-Num,作者是 Alves Jose,并感谢该主题中所有讨论的参与者 https://fortran-lang.discourse.group/t/faster-string-to-double/
当前提案的已知精度限制:转换为双精度,精确到 epsilon(0.0_dp) 例如
输入:123456.78901234567890123456789012345678901234567890+2
格式化读取:12345678.90123457
to_num:12345678.90123457
差异绝对值:0.1862645149230957E-08
差异相对值:0.1508742584455759E-13%
转换为四精度可能会在约 200*epsilon(0.0_qp) 处发生偏差 例如
输入:0.140129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125E-443
格式化读取:0.140129846432481707092372958328991608E-443
to_num:0.140129846432481707092372958328996233E-443
差异绝对值:0.4625E-475
差异相对值:0.3300E-029%
将字符串转换为数字 (规范)
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
integer(kind=int8), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 integer(int8) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
integer(kind=int16), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 integer(int16) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
integer(kind=int32), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 integer(int32) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
integer(kind=int64), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 integer(int64) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
real(kind=sp), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 real(sp) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | s |
输入字符串 |
||
real(kind=dp), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
输出 real(dp) 值
将字符串中的值流转换为数字 (规范)
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
integer(kind=int8), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 integer(int8) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
integer(kind=int16), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 integer(int16) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
integer(kind=int32), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 integer(int32) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
integer(kind=int64), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 integer(int64) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
real(kind=sp), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 real(sp) 值
类型 | 意图 | 可选 | 属性 | 名称 | ||
---|---|---|---|---|---|---|
character(len=:), | pointer | :: | s |
输入字符串 |
||
real(kind=dp), | intent(in) | :: | mold |
哑元参数,用于在编译时消除泛型接口的歧义 |
||
integer(kind=int8), | intent(inout), | optional | :: | stat |
输出 real(dp) 值