
if( a == b )
和
if( qFuzzyCompare(a,b) )
假设变量a和b是:
a = 1234.5678b = 1234.5678
注意:我问,因为我在Qt中比较双打时遇到问题,我想了解qFuzzyCompare的工作原理.
解决方法 qFuzzyCompare()的 official documentation并没有真正解释为什么会使用它,但通常比较浮点值被认为是一种不好的做法,因为可能会发现两个看似相同的浮点变量由于舍入误差而不同.您可以阅读有关浮点变量 here的这个和其他陷阱的更多信息.当qt5.6.0附带的qFuzzyCompare()的源代码分别用于qt5.6.0(保持CTRL并单击该函数以在QtCreator中看到它)时,可以推断出它试图减少不准确的可能性.平等测试的方式:
Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(double p1,double p2) Q_required_RESulT Q_DECL_UNUSED;Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(double p1,double p2){ return (qAbs(p1 - p2) * 1000000000000. <= qMin(qAbs(p1),qAbs(p2)));}Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(float p1,float p2) Q_required_RESulT Q_DECL_UNUSED;Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(float p1,float p2){ return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1),qAbs(p2)));} 总结 以上是内存溢出为你收集整理的c – qFuzzyCompare如何在Qt中工作全部内容,希望文章能够帮你解决c – qFuzzyCompare如何在Qt中工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)