std::max() 函数与定点实现的比较中的问题

issue in std::max() function comparision with fixed point implementation

本文关键字:比较 实现 问题 max 函数 std      更新时间:2023-10-16

是否有任何标准函数可以帮助我比较两个浮点值之间的max()min()

我已经为这个min()编写了定点实现,max()函数从q0s32q32s0类型(33 种类型(。

但我想用std:min()std::max()函数测试我的函数的精度损失。但是从标准功能来看结果并不好。

我尝试过这种方式,但这对我不起作用,结果不符合预期.

法典:

float num1 = 4.5000000054f;
float num2 = 4.5000000057f;
float resf = std::max(num1,num2);
printf("Result is :%20.15fn",resf);
printf("num1 :%20.15f and num2 :%20.15fn",num1,num2);

输出:

Result is :   4.500000000000000
num1 :   4.500000000000000 and num2 :   4.500000000000000

大多数 c++ 实现都使用 IEEE 754 标准进行浮点运算。以下是有关此问题的一些有用信息

在 IEEE 754 中,浮点数是一个 32 位单精度浮点数(符号为 1 位,指数为 8 位,值为 23*(,即浮点数具有 7 个十进制数字的精度。

在 IEEE 754 中,double 是一个 64 位双精度浮点数(符号为 1 位,指数为 11 位,值为 52* 位(,即double 具有 15 个十进制数字的精度。

您需要改用double才能获得所需的结果。