【发布时间】:2017-08-09 17:57:36
【问题描述】:
ADI 公司的 BFF-533 处理器不提供原生浮点支持,但提供浮点仿真。
使用 IDE VisualDSP++,用户可以在高性能浮点和严格的 IEEE 合规性之间进行选择。
据我了解,the difference between these two 导致内存中浮点值的表示不同,因此我进行了以下测试:
union TestType
{
float hello;
char test[4];
};
TestType tt;
tt.hello = 0.00123456789;
我用这两个选项编译并运行了它,期望在测试数组中看到不同的值,但每次运行都得到相同的值:
有人能解释一下为什么我在两次运行中看到的似乎都是 IEEE 表示吗?
【问题讨论】:
-
差异可能不在于内存表示,而在于如何处理值? IE。更多的是速度优化配置而不是内存内容配置?
-
如果将
100添加到tt.hello会怎样?严格的 IEE-754 32bit 结果应该给你100.0012359619140625。 -
ISTM 认为@Yunnosch 是对的。表示没有什么不同,但我猜处理(模拟)数学的算法是不同的。可能,一种更准确且 100% 符合 IEEE 标准,另一种更快,但会走弯路,因此比 IEEE 一致性要求的准确度略低。
-
感谢您的意见。你可能是对的!
-
@YSC 我认为 IEEE-754 可以准确地表示 100?在这里试试:h-schmidt.net/FloatConverter/IEEE754.html
标签: c++ c floating-point ieee-754 blackfin