我正在尝试读取写为-0.49430978D-02
的值,但它们只是以-0.49430978
形式出现。我将字符保存在字符串vs
中并尝试了两种
myval = stod(vs)
以及
sscanf(vs.c_str(), "%le", &myval)
但是他们都没有用科学记数法读取指数。是因为它是D
而不是E
吗?如何在c++
中正确读取此值?
答案 0 :(得分:2)
D
格式是一些不常见的浮点表示,对于某些Fortran实现来说,它们通常表示双精度(或更高)。 AFAIK,所有其他环境都使用E
作为浮点,并且不指示基础精度。
我认为您唯一的选择是将该值作为字符串读取,将所有D
字符替换为E
,然后使用strtod()
或等效字符完成处理。