QRound的使用总结

    Qt中qRound的实现,在负数的情况下不同于一般的四舍五入。如果负数尾数<=.5的情况下,则舍弃尾数。(注意,=的情况下也舍弃o) 如果负数尾数 >0.5的情况下,则负小数整数部分-1。    

Q_DECL_CONSTEXPR inline int qRound(double d)
{ return d >= 0.0 ? int(d + 0.5) : int(d - double(int(d-1)) + 0.5) + int(d-1); }

/**
 * Qt中通过模板获取qptrdiff的类型
 * TODO: 知识点:我能力有限,暂时不清楚模板应用底层原理。
 * 通过模板参数直接获取相关类型
 * 似乎与工厂设计模式有些相近(只是个人理解,如有误请留言指正)
 */

template <int> struct QIntegerForSize;
template <>    struct QIntegerForSize<1> { typedef quint8  Unsigned; typedef qint8  Signed; };
template <>    struct QIntegerForSize<2> { typedef quint16 Unsigned; typedef qint16 Signed; };
template <>    struct QIntegerForSize<4> { typedef quint32 Unsigned; typedef qint32 Signed; };
template <>    struct QIntegerForSize<8> { typedef quint64 Unsigned; typedef qint64 Signed; };
template <class 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: `std::qround` 是 C++11 中新增的方法,它是四舍五入取整的函数,但是它并不属于标准 C++ 库函数,因此不在标准头文件中。在使用 `std::qround` 函数时,需要包含 `<cmath>` 或 `<math.h>` 头文件,并且需要使用命名空间 `std`,如下所示: ```c++ #include <cmath> double x = 3.5; int y = std::qround(x); // 四舍五入取整,结果为 4 ``` ### 回答2: std::qround不是标准库中的函数,它也不在任何头文件中。可能是由于打字错误或者误解所导致的问题。标准库中有一个与数学相关的函数叫做round,它可以四舍五入到最接近的整数,如果需要使用该函数,应该包含<cmath>头文件。 ```cpp #include <cmath> int main() { double number = 3.14; double roundedNumber = std::round(number); return 0; } ``` 对于非标准库的函数,可能需要包含相应的自定义头文件或者使用其他第三方库。但是没有一个名为std::qround的函数在标准库中。如果有其他特定问题,请提供更多细节以便进行进一步的回答。 ### 回答3: std::qround 函数是 C++11 标准库中的一个四舍五入函数,用于将浮点数四舍五入为最接近的整数。然而,实际上并不存在名为 std::qround 的函数。 C++11 标准库中确实存在一些与浮点数相关的四舍五入函数,例如 std::ceil、std::floor 和 std::round,它们分别用于向上取整、向下取整以及标准四舍五入。然而,这些函数都是定义在 <cmath> 头文件中。 因此,如果您在代码中使用 std::qround,很可能遇到一个编译错误,因为该函数并不存在。您应该检查您的代码,确认是否正确地使用了 std::qround,并考虑使用正确的函数或头文件来达到您的预期目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值