std::max() 函数与定点实现的比较中的问题
issue in std::max() function comparision with fixed point implementation
是否有任何标准函数可以帮助我比较两个浮点值之间的max()
或min()
?
我已经为这个min()
编写了定点实现,max()
函数从q0s32
到q32s0
类型(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
才能获得所需的结果。
相关文章:
- 三向比较运算符成员与非成员实现
- std::max() 函数与定点实现的比较中的问题
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 如何实现 Boost.Hana 结构的相等比较运算符?
- 为什么sub_match和basic_string比较运算符使用额外的字符串副本实现?
- 为什么地图需要实现'operator<'以及如何比较对象?
- 如何实现通用比较?(用于数字和字符串)
- 为 RocksDB 实现一个比较器
- 比较器的两个实现之间的差异
- std::unordered_map如何存储和比较其密钥,以实现无需订购即可快速访问元素?
- 如何准确测量和比较opencl速度以实现循环功能的简单速度
- 如何实现分类比较器,以级联相关对象
- 如何在不使用 lambda 表达式的情况下实现特定的比较器
- 如何实现 std::map::查找包含两个结构'Pos'结构的比较逻辑,每个结构包含 x 和 y 坐标
- 定制比较器,用于使用多种排序键来实现排序
- 如何为结构/类字符串实现比较操作员
- 算法实现与 C++ 和 PHP 进行比较
- 使用模板实现排序.如何使用比较器
- C# 中的 pHash 图像比较实现
- 不允许使用比较实现C++映射不完整类型