AM3354 浮点计算问题
小弟遇到一个问题,请大神指点一二:
软件硬件平台:WinCE6.0 + AM3354。
由于WinCE6.0编译器不支持浮点指令,小弟使用了ARM官方提供的VFP库。该库之前在WinCE6.0+S3C6410上使用,没有问题。
但是在当前的平台上,会出现如下问题:
机器在上电后,启动我们的数控软件,数控软件中有比较多的浮点运算。浮点运算的过程会出现偏差,比如:
正确的计算结果为:
540.63510936875002 :::0x4080E514B4388151
出现问题时结果为:
540.63510936874991 :::0x4080E514B4388150
正确的计算结果为:
2554.9807209000001:::0x40A3F5F6210CC002
错误的计算结果为:
2554.9807208999996:::0x40A3F5F6210CC001
计算数据都是类似的,就不一一举例了。通过数据比较,看出,其二进制浮点标示,最低位差了1。
正确结果比错误的差别就是最后一位的值。
小弟推测,可能是round规则的问题,但是找不到证据。请大神们指点一二。感激不尽。
S3C6410的硬件浮点处理单元为VFPv2,AM3354为VFPv3+NEON。