【发布时间】:2019-05-26 06:38:47
【问题描述】:
将字符串转换为长双精度时,我在 QNX 中失去了精度。你知道如何解决这个问题吗?
我正在使用 C++。我试过 double 和 float 都没有问题。
#include <iostream>
#include <string>
#include <limits>
#include <sstream>
int main(){
long double originalNumber = std::numeric_limits<long double>::max() / 2;
long double convertedNumber;
// From long double to string
std::ostringstream ostr;
ostr << originalNumber;
std::string tmp_str = ostr.str();
//From string to long double
std::istringstream istr(tmp_str);
istr >> convertedNumber;
// Check if they are similar
if (originalNumber == convertedNumber)
std::cout<< "The same\n";
else
std::cout<< "Not the same\n";
return 0;
}
结果总是Not the same
【问题讨论】:
-
您需要use
std::setprecision才能实际输出足够的精度,以期获得完全可重现的值。也就是说,在可表示的doubles 的边界附近,如果仍有一些损失,我不会感到惊讶。
标签: c++ floating-point qnx qnx-neutrino