在C中分配大数字加倍

时间:2017-11-07 00:34:32

标签: c double

当我尝试为double变量分配一个大号时,我收到此警告

  

sqrt.c:8:11:警告:整数常量对于其类型而言太大   double x = 28462391747582051264412870770688;

#include <stdio.h>
#include <math.h>
#include <limits.h>
#include <float.h>

int main() {
        printf("MAX_DBL=%.53f\n",DBL_MAX);
        double x=28462391747582051264412870770688; 
}

然而,MAX_DBL大于我尝试分配的数字。

1 个答案:

答案 0 :(得分:5)

double x=28462391747582051264412870770688;

数字文字的类型不是double,而是int。这个数字对于int来说太大了。

如果您使用double字面值:

double x=28462391747582051264412870770688.0;

警告消失,但如果需要,数字将四舍五入到下一个可表示的double。 (此处的特定数字可以表示,as @chux noticed。)