leeber 发表于 2006-12-11 15:27:05

马老师,看看这个问题是cvavr的bug还是?关于float和double的问题。

好好研究了下cvavr编译器的float和double的问题,发现里面存在无法理解的事情。



cvavr编译器里的float和double都是浮点型的,占32位,大小范围一样。



可是在编译器里两者具体还是有差别。float的精度是7位,而double的精度只有6位。那么说明才cvavr里两者还是不同的。可是损失掉的1位精度,提高了什么呢?

我试验发现两者表示的范围是一样的。 就是精度总是float高,那么double有什么优势?



研究cvavr的人比较少,所以到这里问您了!



留个邮箱,如果有探讨的需要可以邮箱联系。

leeber2000@126.com

machao 发表于 2007-3-10 00:13:41

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]
查看完整版本: 马老师,看看这个问题是cvavr的bug还是?关于float和double的问题。