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.

[参考译文] CCS/TMS320F28027F:舍入浮点数

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS320F28027, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/614094/ccs-tms320f28027f-rounding-floating-pointing-number

器件型号:TMS320F28027F
主题中讨论的其他器件:TMS320F28027controlSUITE

工具/软件:Code Composer Studio

您好!

我已经使用定点 tms320f28027创建了一个项目,并且我正在对 ADC 数据执行一些浮点算术,因此在乘以比例因子后,我将获得非常长的浮点结果,如3.584743647。

如何将该浮点舍入到四个十进制数、例如

3.584743647  至3.5847

谢谢。

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

    F28027是定点 CPU。 根据您的描述、我认为 IQ 格式可以满足您的要求。

    您可以在 C:\ti\controlSUITE\libs\math\IQmath\v160\doc 中找到相关文档

    插孔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议。
    但现在我没有使用 IQmath 库,而是使用数学库。 我知道这不是在没有 IQmath 的定点器件上进行浮点算术的有效方法。 在我的案例中、它不是时间关键型系统、而且我认为在我的项目中使用 IQmath 库没有任何优势。
    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Indrajit、

    不可能、抱歉。 任何数字机器都具有有限的数字精度、因此您不一定能够准确地表示带有后缀零的数字。 例如、如果您执行了以下操作...

    #include

    易失性浮点 x = 3.584743647;
    volatile float y、z;

    MAIN ()

    y =舍入(x * 10000);
    Z = y/10000;

    ...您将把 y 舍入到最接近的整数、然后再进行分频以恢复小数点。 如果精度无限、它将起作用、但在有限精度机器上、您可能看不到只有四个小数位的数字。 使用32位浮点、您可以表示3.58469987或3.58470011、但不能表示3.58470000。 如果位数越多、精度就越高、但问题仍然存在。 无论是否在 RTS 中仿真浮点数、都是如此。

    如果截断小数位非常重要、则需要使用 Iq 等积分数据类型。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您消除我的疑虑。
    我将使用 IQmath。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    听起来不错。