c++ - 处理 stof 超出范围错误

标签 c++

我使用 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/

相关文章:

c++ - glReadPixels 函数返回错误 1282 (GL_INVALID_OPERATION)

c++ - 动态指针和对象

c++ - 在 C++ 中用逗号格式化数字

c++ - 循环遍历未知大小的数组 C++

c++ - 对于空类型的变体,为什么 std::variant 实现需要超过 1 个字节?

c++ - 奇怪的数字转换 C++

c++ - 多重声明 gcc 的问题

c++ - 在事先不知道总大小的情况下写入变量

c# - 在 C# 中保留 C++ 指针是否安全?

c++ - 没有赋值运算符的按位NOT运算-可能吗?