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/LAUNCHXL-F28069M:浮点精度

Guru**** 2609955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/688511/ccs-launchxl-f28069m-float-precision

器件型号:LAUNCHXL-F28069M

工具/软件:Code Composer Studio

尊敬的每个人:

我对浮点值有精度问题。  

#include "math.h" 

 的解决方案。 我定义了5种不同类型的浮点参数、以检查该过程的工作原理。

float32 p1 = 1.1;
float p2 = 1.1;
float64 p3 = 1.2;
double p4 = 1.3;
long double p5 = 1.4; 

这些浮点参数的结果如下:

当我从"Expressions"窗口中给出这些"1.1"值时、结果肯定是相同的。

这意味着截断将不起作用。 我知道 这是关于 CCS:存储器中的64位值或 许多 IEEE-754数据转换 器如何转换该值的。

在这种情况下、您会怎么做?

它不会对计算产生很大影响、但在向计算机或 HMI 界面发送或接收值时、它看起来有点奇怪。 (我输入了1.1、但它显示了我1.10000002等。)

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅编译器文档。 类型大小与预期不同。 浮点型和双精度型均为单精度 IEEE754。 long double 只是双精度。 C 浮点字面量具有2个精密修饰符。 末尾的"F"(如1.3F)表示浮点、末尾的字母表示双精度型、末尾的"L"表示长双精度型。 因此、对于 long double 初始化程序、您应该在末尾添加 L、1.4L。 您需要检查 SPRU514P 或类似文档、然后检查6.4数据类型。

    除了由于初始化程序中缺少"L"而使 P5变量的尾端归零之外、我在图片中看不到任何错误。

    此致
    Edward