2016-01-17 46 views
1

我正在嘗試讀取寫入爲-0.49430978D-02的值,但它們僅以-0.49430978的形式出現。我保存在一個字符串vs人物和嘗試都在C++中以'D'作爲指數前綴讀取雙重科學記數法

myval = stod(vs)

以及

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

,但他們都無法讀取在科學記數法的指數。是因爲它是D而不是E?如何在c++中正確讀取此值?

+1

如果D可以替換爲E(這並不清楚,但如果),爲什麼不在使用常規C++功能(如stod)之前更換它? –

回答

1

D格式是一種罕見的浮點表示形式,常見於某些Fortran實現中以指示雙精度(或更高)。 AFAIK,所有其他環境使用E作爲浮點數,並不表示基礎精度。

我認爲你唯一的選擇是以字符串的形式讀取值,用E代替任何D字符,然後用strtod()或同等處理完成處理。