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

问题描述 投票:0回答:1

有没有可用的标准函数可以帮助我比较两个浮点值之间的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
c++ floating fixed-point
1个回答
0
投票

Here是有关此问题的一些有用信息

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

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

您需要使用double来获得所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.