c++ - 在 C++ 中以 'D' 作为指数前缀读取双科学记数法

标签 c++ string io

我正在尝试读取写为 -0.49430978D-02 的值,但它们只会以 -0.49430978 的形式出现。我将字符保存在字符串 vs 中,并且都尝试过

myval = stod(vs)

还有

sscanf(vs.c_str(), "%le", &myval)

但他们都未能读取科学计数法中的指数。是因为它是 D 而不是 E 吗?如何在 c++ 中正确读取此值?

最佳答案

D format 是一种不常见的浮点表示法,对于某些 Fortran 实现来说是常见的,用于指示 double (或更高)。据我所知,所有其他环境都使用 E用于 float ,不指示底层精度。

我认为您唯一的选择是将值作为字符串读取,替换任何 D带有 E 的字符然后用 strtod() 完成处理或等效的。

关于c++ - 在 C++ 中以 'D' 作为指数前缀读取双科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34844994/

相关文章:

Java正则表达式匹配除一种特殊情况外的所有html元素

c - "tee"类似UNIX中的编程api

c++ - Win API 本地文件引用 c++

c++ - 我如何在不知道 float 长度的情况下进行 fscanf?

c++ - 如何获取 OpenSSL BIO_do_connect() 失败原因?

Perl 字符串的性能

c++ - 读取zlib/miniz压缩数据时出现DATA_ERROR

c++实现全局开关/标志以控制程序行为而无需将类绑定(bind)到公共(public)点的最佳方法

c++ - Log4cxx 宏不适用于包含空字符的字符串

c# - 如何从 C# 中的文件路径获取子字符串?