из доков
QCOMPARE
...
In the case of comparing floats and doubles, qFuzzyCompare() is used for comparing. This means that comparing to 0 will likely fail. One solution to this is to compare to 1, and add 1 to the produced output.
Баг с отказом девелоперов переделывать qFuzzyCompare():
https://bugreports.qt-project.org/browse/QTBUG-16819ещё, как вариант,
QVERIFY(qFuzzyIsNull(0.6 * 8.0 - 0.4 * 12.0)).
ЗЫ: как я понял, в следующем релизе, 5.3.0, могут пофиксить... могу ошибаться...
ЗЗЫ: нет, я ошибаюсь, пока такого нет... стоило бы баг запостить с просьбой, чтобы qCompare() для double/float использовала бы qFloatDistance() из QTBUG-32632 вместо qFuzzyCompare().