我使用 websocket 将一些 float 值作为字符串从 JavaScript 发送到 C++。现在,当将值从字符串转换回 float 时,当精度太高时,有时会出现 out of range
错误,例如代码中的输入值:
#include <string>
#include <iostream>
using namespace std;
int main() {
try {
string ans = "1.6704779438076223e-52";
float val = stof(ans);
cout << val << endl;
}
catch (exception &ex) {
cout << ex.what() << endl;
}
return 0;
}
我想做的是在 C++ 端超出范围时降低精度,以便我可以使用该值。
是否有任何内置函数可以做到这一点,或者我是否需要编写一个单独的函数来解析字符串并检查精度?还有什么东西,我需要检查我是否需要手动解析字符串?
最佳答案
您可以先使用std::stod
将其解析为double
,然后将其分配给float
。然后检查 float
是否为 0
、正/负无穷大和 NaN
。
关于c++ - 处理 stof 超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50950521/