我寫了下面的代碼:C++輪(49.5)返回49
void InputNodeInstance::changeSize(QString side, float mult) {
qDebug() << "width: " << width;
double widthMultiplied = width * mult;
qDebug() << "width * mult: " << width * mult;
qDebug() << "widthMultiplied: " << widthMultiplied;
qDebug() << "round(widthMultiplied): " << round(widthMultiplied);
qDebug() << "round(49.5): " << round(49.5);
width = width * mult + 0.5;
qDebug() << "width: " << width;
}
當我打電話用0.9爲mult
的功能,我得到這樣的輸出:
width: 55
width * mult: 49.5
widthMultiplied: 49.5
round(widthMultiplied): 49
round(49.5): 50
width: 49
我想這個問題很清楚。
widthMultiplied
是49.5。
round(49.5)
返回。
round(widthMultiplied)
返回。
爲什麼?
是的,也許你是對的,我也留了個心眼,但qDebug()45.5打印而不是45.49999999。我想,qDebug打印整個數字 – mep
@mep'qDebug'的默認精度是6個小數位數。由於鏈接文章中描述的原因,您發佈的解決方案仍可能會因其他數字而失敗。 – kefir500
但是爲什麼qDebug打印50呢?它應該打印49.499999。如果數字四捨五入,就像我想要的那樣,數字不能是49.499999,因爲輸出是50.它可能是一個解決方案,先四捨五入到小數點後再舍入到一個0位數? – mep