您的位置:首页 > 编程语言 > Qt开发

QT 中一些数学计算函数

2013-08-19 09:37 1281 查看
QT的一些範例中有出現 qmax, qmin 等 math函式的身影,但我在官方文件中卻找不到與 math函式相關的說明,所以我就把函式的source裡面提供的方法整理條列,並且看看還有哪些 math相關的函式可用。在 qglobal.h 裡,可以找到幾種 math函式,條列於下,但一般常用的 math如:qfloor(無條件捨去)、qceil(無條件進位)、qsin,qcos,qtan(三角函數) 等等等...則是都沒有看到。

qAbs ( const &value )

說明:返回絕對值

範例:

int absoluteValue;

int myValue = -4;

absoluteValue = qAbs(myValue);

// absoluteValue == 4qBound ( const &min, const &value, const &max )

說明:返回極限不超過 min , max 的值, 等同於 qMax(min, qMin(value, max))

範例:

int myValue = 10;

int minValue = 2;

int maxValue = 6;

int boundedValue = qBound(minValue, myValue, maxValue);

// boundedValue == 6

qMax ( const &value1, const &value2 )

說明:返回最大值

範例:

int myValue = 6;

int yourValue = 4;

int maxValue = qMax(myValue, yourValue);

// maxValue == 6qMin ( const & value1, const &value2 )

說明:返回最小值

範例:

int myValue = 6;

int yourValue = 4;

int minValue = qMin(myValue, yourValue);

// minValue == 4int qRound ( qreal value )

說明:返回四捨五入的整數

範例:

qreal valueA = 2.3;

qreal valueB = 2.7;

int roundedValueA = qRound(valueA);

// roundedValueB = 2

int roundedValueB = qRound(valueB);

// roundedValueB = 3

qint64 qRound64 ( qreal value )

說明:返最接近的64位元整數

範例:

qreal valueA = 42949672960.3;

qreal valueB = 42949672960.7;

int roundedValueA = qRound(valueA);

// roundedValueA = 42949672960

int roundedValueB = qRound(valueB);

// roundedValueB = 42949672961

int qrand ()

說明:thread-safe版本的標準C++亂數函式,返回 0 到 RAND_MAX之間的數字序列之下一個整數,使用qsrand(uint seed) 重新給定種子

範例:

qreal valueA = qrand() % 100; // 41

qreal valueB = qrand() % 10; // 7

qreal valueC = qrand() % 2; // 0

qsrand(0xffffffff);

valueA = qrand() % 100; // 35

valueB = qrand() % 10; // 9

valueC = qrand() % 2; // 0

qsrand(0xffffff);

valueA = qrand() % 100; // 35

valueB = qrand() % 10; // 3

valueC = qrand() % 2; // 0

bool qFuzzyCompare ( double p1, double p2 ) [靜態方法]

說明:比較兩個長浮點數的大小,如果兩者相同返回true,反之為否,同樣為thread-safe。另外也提供float版本的方法: bool qFuzzyCompare ( float p1, float p2 ) [static]

範例:

qreal valueA = 42949672960.3;

qreal valueB = 42949672960.7;

bool equal = qFuzzyCompare(valueFA,valueFB);

// equal = false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: