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.

[参考译文] Compiler/CC2640:浮点变量中的十进制支持数

Guru**** 2553450 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/585418/compiler-cc2640-number-of-decimal-support-in-float-variable

部件号:CC2640

工具/软件:TI C/C++编译器

我想确认此TI平台支持多少小数点?

我正在将此用于GPS位置,并尝试使用6位小数。

对于正数,可以。  但对于负值,它显示不正确的十进制值。

例如  

浮点值;

值=- 70.56.789万 ;

在CCS调试器中,当我检查该值时,它显示为  

默认值:- 70.567.8864万
十六进制:0xC28D22C2
十进制:- 70.567.8864万
八进制:3.0243万221302</s>22.1302万
二进制:11万10100011010010001011000010b</s>10.1万 11.01万10.001万1100.001万

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC2640具有ARM Cortex-M3。 对于ARM的所有变体,“float”是IEEE-32,“double”是IEEE-64。 硬件实际上不会跟踪小数点的浮点数,但头文件float.h会告诉您大致的小数点答案。 flt_dig为6,因此"浮点"大约需要6个有效小数位。 dbl_dig为15,因此"双精度数"大约需要15个有效小数位。

    值70.56.789万 不能精确地以32位浮点表示,因此编译器提供最接近的值-0x1.1a4584p+6,0xc28d22c2或(近似值) 70.56.7886万
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现这些转换有时很有用:
    www.h-schmidt.net/.../IEEE754.html
    www.exploringbinary.com/.../

    有时,我会发现自己指的是:
    docs.oracle.com/.../ncg_goldberg.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供的大量信息和确认...为了确保所有6位小数都是100 % ,我必须使用“双精度数”来确定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您永远不能保证100 % 协议;某些小数值(如1/3)不能精确表示为浮点或双精度。

    请记住,您还必须对小数点前的数字进行计数。 考虑70.56.789万。 六位十进制数字为70.5679

    是的,您似乎需要双精度。