将 QString::arg(double a) 与 std::numeric_limits<double>::infinity() 一起使用

Use QString::arg(double a) with std::numeric_limits<double>::infinity()

提问人:HarryP2023 提问时间:6/22/2023 更新时间:6/22/2023 访问量:50

问:

我正在尝试使用Qt框架中的QString类将浮点值转换为其字符串表示形式。为此,我使用以下函数:

QString QString::arg(double a)

https://doc.qt.io/qt-5/qstring.html#arg-9

但是,我的代码可能会从以下静态函数中提供“无限”浮点值:

const double numericValue = std::numeric_limits<double>::infinity()

我想知道是否有很好的方法来处理这种情况。Qt文档中没有提到无限值大小写。Cpp 参考表明,此值是实现定义的,甚至可能无法转换为浮点类型!https://en.cppreference.com/w/cpp/types/numeric_limits/infinity

我当然可以用if块来处理这个问题:

QString asString;
if (numericValue == std::numeric_limits<double>::infinity())
{
    asString = "Inf";
}
else
{
    asString = QString().arg(numericValue); 
}

但是有没有更好的方法呢?这甚至明智吗?

C++ Qt 无穷大 数值限制

评论

0赞 hyde 6/22/2023
Qt默认如何转换它?
0赞 Serge Roussak 6/22/2023
除了问题的主题之外,最好不严格地进行比较。double
1赞 hyde 6/23/2023
@SergeRoussak 这与特定值无穷大进行比较。我不知道人们会如何不严格地比较它......

答: 暂无答案