阅读双重科学记数法' D'作为C ++中的指数前缀

时间:2016-01-17 23:19:44

标签: c++ string io

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

myval = stod(vs)

以及

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

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

1 个答案:

答案 0 :(得分:2)

D格式是一些不常见的浮点表示,对于某些Fortran实现来说,它们通常表示双精度(或更高)。 AFAIK,所有其他环境都使用E作为浮点,并且不指示基础精度。

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