我有一个看起来像下面的代码
#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
注意:考虑到浮点类型只是实数的近似值,当您用不同的方法执行相同的计算时,通常会得到略有不同的值。