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.

[参考译文] TMS320F2.8377万S:F2.8377万S MCU的双精度浮点支持

Guru**** 2470160 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1095789/tms320f28377s-double-precision-floating-point-support-for-f28377s-mcu

部件号:TMS320F2.8377万S

您好,  

我正面临着C中浮点变量值与Matlab中浮点变量值精度不同的问题。 我想避免在C中自动舍入浮点值。 为了解决这个问题,我曾考虑使用像GMP这样的外部多精度库,但C2000 MCU似乎不支持GNU编译器。 是否有可用于实现软件双精度的GMP替代库? 使用的编码环境是10.4 Studio.0.0.0006万 。  

提前感谢!

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

    您好,

    FPU使用IEEE754标准来表示浮点值。 您尝试达到的精度是多少? 您能否提供此舍入行为的示例?

    -尚塔努

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

    您好,Shantanu,  

    感谢您的回复。 为了提供一个示例,Matlab中派生的值是245.7379万.625 ,而C中的值是245.7379万.5。 这种舍入会在使用这些值的以下计算中导致许多错误。  

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

    您好,

    此错误是由FPU使用的IEEE754浮点标准引起的。 要检查此设置,请转至 https://www.h-schmidt.net/FloatConverter/IEEE754.html 并键入245.7379万.625  ,您将看到245.7379万.5 作为实际存储的值。 要解决此问题,您可以从单精度切换到双精度,或基于IEEE754格式实现C格式的纠错码。

    -尚塔努