1
我正在嘗試讀取寫入爲-0.49430978D-02
的值,但它們僅以-0.49430978
的形式出現。我保存在一個字符串vs
人物和嘗試都在C++中以'D'作爲指數前綴讀取雙重科學記數法
myval = stod(vs)
以及
sscanf(vs.c_str(), "%le", &myval)
,但他們都無法讀取在科學記數法的指數。是因爲它是D
而不是E
?如何在c++
中正確讀取此值?
我正在嘗試讀取寫入爲-0.49430978D-02
的值,但它們僅以-0.49430978
的形式出現。我保存在一個字符串vs
人物和嘗試都在C++中以'D'作爲指數前綴讀取雙重科學記數法
myval = stod(vs)
以及
sscanf(vs.c_str(), "%le", &myval)
,但他們都無法讀取在科學記數法的指數。是因爲它是D
而不是E
?如何在c++
中正確讀取此值?
D
格式是一種罕見的浮點表示形式,常見於某些Fortran實現中以指示雙精度(或更高)。 AFAIK,所有其他環境使用E
作爲浮點數,並不表示基礎精度。
我認爲你唯一的選擇是以字符串的形式讀取值,用E
代替任何D
字符,然後用strtod()
或同等處理完成處理。
如果D可以替換爲E(這並不清楚,但如果),爲什麼不在使用常規C++功能(如stod)之前更換它? –