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.

[参考译文] MSP430FR5969:浮点数据类型运算-结果四舍五入为最接近的整数

Guru**** 2457760 points
Other Parts Discussed in Thread: MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1441592/msp430fr5969-float-data-type-operations---result-is-rounded-off-to-nearest-integer

器件型号:MSP430FR5969

工具与软件:

大家好!

作为持续应用的一部分、我们需要在 MSP430FR5969上测试数学运算的近似时序。MSP430板是16位的、没有 FPU、并通过软件处理浮点运算。

虽然我们进行测试、但观察到当涉及2个稍大的浮点值时、结果将四舍五入到最接近的整数。

例如:

浮点 a=9999999.5、b=1.0;

float res=a*b;

在调试时、我们发现 res 的值为10000000.0

我们还检查了一些其他值、发现当结果的整数值大于7位时、该值会四舍五入到最接近的整数。

如果结果值很小、则数据是正确的。 浮点应能够处理此大小的数据。

有些人可以澄清这种行为、并提供一些有关我们可以使用的数据限制的信息、或者我的理解是否有误。

我们非常感谢您提供任何答案。

谢谢。此致、

Ruthvik R

BSL 代码

#include  
#include
#include
#include  

   浮点 c = 99999.5f;
   浮点 d = 1.0f;
   浮点结果;  
int main (void)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
PM5CTL0 &=~μ H LOCKLPM5;
FRCTL0 = FRCTLPW | NWAITS_1; //为闪存设置一个等待状态

PJSEL0 |= (BIT6 | BIT7);     //对于 HFXT

      CSCTL0_H = CSKEY >> 8;                   //解锁 CS 寄存器
      CSCTL1 = DCOFSEL_6;                      //将 DCO 设置为8MHz
      CSCTL2 = SELA_1 | SELS__HFXTCLK | SELM__HFXTCLK;
      CSCTL3 = 0;    //将所有分频器设置为1

      CSCTL4 = HFXTDRIVE_2 | HFFREQ_2 | LFXTOFF;

    应执行的操作
    {
        CSCTL5并且=~(LFXTOFFG | HFXTOFFG);      //清除 XT1和 XT2故障标志

        SFRIFG1 &=~OFIFG;
    }
     while (SFRIFG1&OFIFG);                 //测试振荡器故障标志

     CSCTL0_H = 0;                              //锁定 CS

// PIN 配置
P2DIR |= BIT2;


while (1)

  P2OUT |=位2;

  结果= c*d;

  P2OUT &=~BIT2;

  结果= c*d;

}

返回0;
}

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

    浮点有限制。 在本例中、尾数的位数是有限的。 这并不难找到,甚至 维基百科也 说:"所有具有七个或更少十进制数字的整数,以及任何2n 整数≤149−n≤127 ,都可以精确地转换为 IEEE 754单精度浮点值。 "

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

    欢迎来到浮点! 像往常一样,大卫是对的。

    请使用双精度型数值代替浮点数。

    针对 TI 库描述所有这些的常量应该可在 float.h 中找到

    Kernigham 和 Plauger 说:"使用浮点就像移动的沙桩,每次移动一个,你会失去一点沙子,拾起一点污垢。"