有没有可用的标准函数可以帮助我比较两个浮点值之间的max()
或min()
?
我已经为此min()
和max()
函数从q0s32
类型到q32s0
类型(33种类型)编写了定点实现。
但是我想用std:min()
和std::max()
函数测试函数的精度损失。但是std函数的结果不好。
我尝试过这种方式,但是对我来说不起作用,因为结果不符合预期。
Code:
float num1 = 4.5000000054f;
float num2 = 4.5000000057f;
float resf = std::max(num1,num2);
printf("Result is :%20.15f\n",resf);
printf("num1 :%20.15f and num2 :%20.15f\n",num1,num2);
输出:
Result is : 4.500000000000000
num1 : 4.500000000000000 and num2 : 4.500000000000000
Here是有关此问题的一些有用信息
float是一个32位IEEE 754单精度浮点数1位符号,(8位为指数,23 *为值),即float有7个十进制数字 。
double是64位IEEE 754双精度浮点数(符号1位,指数11位,值52 *位),即double具有15个十进制数字精度。
您需要使用double
来获得所需的结果。