马老师,看看这个问题是cvavr的bug还是?关于float和double的问题。
好好研究了下cvavr编译器的float和double的问题,发现里面存在无法理解的事情。cvavr编译器里的float和double都是浮点型的,占32位,大小范围一样。
可是在编译器里两者具体还是有差别。float的精度是7位,而double的精度只有6位。那么说明才cvavr里两者还是不同的。可是损失掉的1位精度,提高了什么呢?
我试验发现两者表示的范围是一样的。 就是精度总是float高,那么double有什么优势?
研究cvavr的人比较少,所以到这里问您了!
留个邮箱,如果有探讨的需要可以邮箱联系。
leeber2000@126.com The following table lists all the data types supported by the CodeVisionAVR C compiler, their range of possible values and their size:
Type Size (Bits) Range
bit 1 0 , 1
char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
signed long int 32 -2147483648 to 2147483647
float 32 +- 1.175e-38 to +- 3.402e38
double 32 +- 1.175e-38 to +- 3.402e38
The bit data type is supported only for global variables.
If the Project|Configure|C Compiler|Code Generation|char is unsigned option is checked or #pragma uchar+ is used, then char has by default the range 0..255.
========================================
在CVAVR的使用说明中给出了 float 和 double 的范围,他们是一样的,如同int 和 short int
页:
[1]