如何使用 c++ 字符串流将字符串转换为双精度值?字符串是不包含"e"的非标准科学记数法



我有一个看起来像下面的代码

#include <iostream>
#include <sstream>
using namespace std;
int main(){
string s = "-1.42-14";
stringstream ss;
ss << s;
double a ;
ss >> a;
cout << "a = " << a << endl;
}

我运行这段代码,得到a = -1.42,但我想要a = -1.42e-14。我该怎么办呢

您可以简单地将这两部分分开阅读,然后手动将它们合并:

std::string s = "-1.42-14";
std::istringstream ss(s);
double mantissa;
ss >> mantissa;
double exponent;
ss >> exponent;
double a = mantissa * std::pow(10.0, exponent);
std::cout << "a = " << a << 'n';

输出:

a = -1.42e-14

注意:考虑到浮点类型只是实数的近似值,当您用不同的方法执行相同的计算时,通常会得到略有不同的值。

相关内容

最新更新