|
- double MathUtil::PI()
- {
- return atan(1.0) * 4;//常识,求π的高精度表示
- //tan π/4=1 所以 atan( 1 ) = π/4,PI = atan(1) * 4
- }
- // 判断两个双精度浮点数是否相等,因为浮点数都是近似存储
- bool MathUtil::IsEqual(double a, double b, double tol)
- { // 当两个浮点数的差小于10E-7,则判定两个浮点数相等
- return (fabs(a - b) < tol);
- }
- //一位小数四舍五入
- int MathUtil::Round(double a)
- {
- return(int)(a + 0.5);
- }
- //圆整,四舍五入
- double MathUtil::Round(double a, int precision)
- {
- return (floor(a*pow(10.0, precision) + 0.5) / pow(10.0, precision));
- //a乘10 的 precision 次方加0.5,用floor向下取整,最后除以10的p次方,从而将小数点移回到原来的位置
- }
- //生成一个在指定范围minValue和maxValue之间的随机整数
- int MathUtil::GetRand(int minValue, int maxValue)
- {
- assert(maxValue - minValue);
- //使用assert宏来检查maxValue和minValue之间的差异。如果maxValue小于或等于minValue,那么assert宏将抛出一个断言错误
- int value = rand();//调用标准库中的rand()函数来生成一个随机整数,并将其赋值给变量value
- int rc=minValue+(
- (int)CMathUtil::Round(((double)value)/RAND采用MAX*(maxValue - minValue)));
- /*这行代码首先将value强制转换为double类型,
- 然后除以RAND采用MAX(在标准库中,这是一个表示随机数生成器可以生成的最大值的常量)。
- 这样做的目的是将生成的随机数缩放到[0, maxValue - minValue]的范围内。
- 然后使用CMathUtil::Round函数对这个浮点数进行四舍五入,并转换回整数。
- 最后,将结果加上minValue,以将生成的随机数转换回原始的范围[minValue, maxValue]。*/
- return rc;//最后,这行代码返回计算出的随机整数。
- }
复制代码 |
|