从“双精度”转换为“整数”意味着什么可能丢失数据?

时间:2019-04-14 11:53:42

标签: c compiler-warnings

我对C语言中的日志格式有疑问。 我已经定义了变量,如下所示,

double **rx, rr00, perranking;

rx0 = dmatrix(1, PN, 1, M);
perranking = 0;
rr0 = dmatrix(1, PN, 1, M);

for (period = 1; period <= hp; period++) {
    if (rx0[i][j - period] != -99) {
        rr00 += rx0[i][j - period];
        perranking++;
        period++;
    }
    rr0[i][j] = rr00 - double (log(perranking));
}

但是,日志格式始终显示“从'double'转换为'int',可能丢失数据”。那么,如何调整我的编码?谢谢

1 个答案:

答案 0 :(得分:1)

双精度值通常不适合整数类型。

double x = 10e54;
int y = x;

如果确定它适合,只需添加显式强制转换以禁止警告

 int y = (int)x;