This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:浮点问题

Guru**** 2535150 points
Other Parts Discussed in Thread: TM4C1294NCPDT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1178921/tm4c1294ncpdt-floating-point-issue

器件型号:TM4C1294NCPDT

您好!  

我在 TM4C1294中的浮点运算中遇到了问题。 当我将浮点值从0.6增加到0.7乘以0.1时、观察窗口中的变量显示为0.699999。  这实际上导致了问题。 我随附此类问题的屏幕截图。 部分代码如下所示


if (up_key=0)


if (up_key=0)

count++;

其他

计数= 0;

if (count >10)

计数= 15;
set_point[channel_no]+=1.0;

其他

set_point[channel_no]+=0.1;


if (set_point[channel_no]>300.0)//3.3//300.0

set_point[channel_no]=0.0;

 观察窗口中 SET_POIN[0]的校验值为2.20000005、将值递增0.1后、该值必须为2.30000、但为2.29999995、如下图所示

请帮助更正此问题。

此致

霍迪达斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     有几个问题吗?

     -您是否使用硬件 FPU 或软件方式来执行浮点运算?  您能否在开始浮点运算之前调用 FPUEnable(),以便硬件浮点单元执行该工作。

     您能尝试不同的优化级别吗? 您是否看到了相同的问题?

     -有几个 FPU 相关 API。 您能否尝试一下它们、看看是否有任何一个会有所不同?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="289369" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1178921/tm4c1294ncpdt-floating-point-issue ]watch  window 中 set_point[0]的检查值为2.20000005、将值递增0.1后、该值必须为2.30000、但为2.29999995、如下图所示

    某些十进制值不能完全以 IEEE-754浮点格式表示。

     尝试在 32位浮点(也称为单精度)中存储请求的十进制值时、IEEE-754浮点转换器可能会显示"转换导致的错误"、 该浮点在 TM4C1294NCPDT 的 Cortex-M4F CPU 中具有硬件支持。  2.30000的示例:

    基本转换:IEEE 754浮点 运算可以显示使用64位双精度数时的更高精度。 例如:

     Cortex-M4F 不支持64位双精度数、因此使用这些双精度数是在软件中完成的、但速度较慢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    切斯特、您好!

     感谢您提供详细信息。 我认为这是解释。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    我已经尝试了您的所有建议、但没有成功、 最后我在固件中实施了针对应用需求的校正。 我从 IEE754浮点中了解到由于转换而导致的错误、那么、是否有任何方法可以使用该错误来更正值。

    此致

    霍迪达斯