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.

[参考译文] MSP430F249:浮点运算

Guru**** 2387080 points
Other Parts Discussed in Thread: MSP430F249, MSP430FR5969
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1064020/msp430f249-floating-point-operations

器件型号:MSP430F249
主题中讨论的其他器件: MSP430FR5969

大家好、我尝试执行一个简单的加法减法乘法程序

比如

ALL_ADD = 1.700000+1.200000;

alu_mul = 1.700000*1.200000;

这些值将存储在变量中、作为 ALL_ADD = 2.9000001;ALL_MUL=2.03999996;当我将结果与实际值2.9和2.4进行比较时、它会失败、但我也会在这里使用其他微控制器 msp430fr5969、这些变量中存储的结果仅为2.9和2.4。 这两个微控制器都是16位微控制器、并且仅基于 MSP430系列、因此 msp430f249中的问题是什么

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

    这意味着失败了?

    它不等于吗?

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

    是的、它不相等

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

    "浮点就像沙堆、每次移动时、都会失去一点沙子、并会有一点点污垢"

    阅读所有这些常见问题解答主题:

    C 编程常见问题解答

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

    期望任意基10个数字的精确浮点表示会让您失望。 但在本例中、差异可能是由于浮点库中的差异造成的。 FR5969具有 F249无法使用的资源、因此它使用不同版本的库、并且可以为同一问题提供不同的结果。 (或者也许这是 printf 使用的例程、因为您不知道结果如何。) 它们不应该、但无论如何、您不应该期望使用浮点得到准确的结果。

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

    谢谢、David Schiltz

    我想确认、如果有任何硬件模块使 msp430fr5969更好地用于浮点运算、因为它完全依赖于软件库、我们可以继续进行

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

    以前有一些外部浮点协处理器、但我的 google-foo 找不到任何。 但是、我认为您最好的选择是管理您的预期、并了解如何处理浮点和十进制到二进制转换的实际情况。 我不知道硬件解决方案会更好。

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

    我只想强调一下 David 和 Keith 已经说过的话:

    您会看到浮点而不是 MSP430的伪影。 有些值即使在双精度浮点中也无法准确表示(仅限1/3不能精确表示为十进制)。  

    不要使用"if (value == Expected)"、而是考虑类似于"if (value - Expected < 0.001)"的内容。

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

    我想你没想到这一点。 他报告了 F249和 FR5969的不同结果。 只是略有不同,但却不同。

    由于库中的编译时间差异、这两个部分使用的库略有不同。 结果应该相同、但可能存在问题。 需要深入研究源代码才能找到它。

    但区别在于可以表示的是什么、而我的观点是期望浮点的精确结果是愚蠢的。 但我确实希望得到可重复的结果、并且没有任何尖峰。