【发布时间】:2019-03-19 09:26:03
【问题描述】:
所以我有这段代码,我试图定义一个 n*n 大小的动态矩阵。 事实证明,不是输出打印 G 的值,而是打印 0。知道为什么吗?
#define G 6.67408e-11
typedef struct matrix
{
double mass;
double cmx;
double cmy;
}MATRIX;
MATRIX **mtr;
void main(int argc, char** argv){
const long n = atoi(argv[1]);
mtr = (MATRIX**)calloc(n,sizeof(MATRIX*));
for (int i=0; i<n; ++i)
{
mtr[i]=(MATRIX*)calloc(n,sizeof(MATRIX));
}
mtr[0][0].cmx=G;
printf("%f\n", mtr[0][0].cmx);
}
【问题讨论】:
-
这不是minimal reproducible example。 minimal reproducible example 将是
#include <stdio.h> int main(void) { printf("%f\n", 6.67408e-11); } -
解决方法:使用
%g。 -
快速浏览一下,6.67408e-11 很可能是一个非常小的值,它被四舍五入为 0。
-
另外它不打印
0,它打印0.000000或类似的。