C++ 矩阵运算的模误差

C++ 矩阵运算的模误差,c++,encryption,modulo,C++,Encryption,Modulo,所以我试着用确定性来计算矩阵的逆。当我删除%26时,我的循环没有错误,但当我包含它时,我会出现以下错误: “=”:从“int”转换为“float”,可能会丢失数据 非法,左操作数的类型为“float” 如果能为我解决这个问题提供帮助,我将不胜感激 for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++){ if (adjacency_matrix[i][j] < 0) adja

所以我试着用确定性来计算矩阵的逆。当我删除
%26
时,我的循环没有错误,但当我包含它时,我会出现以下错误:

“=”:从“int”转换为“float”,可能会丢失数据
非法,左操作数的类型为“float”

如果能为我解决这个问题提供帮助,我将不胜感激

for (int i = 0; i < 3; i++)
    for (int j = 0; j < 3; j++){
        if (adjacency_matrix[i][j] < 0)
            adjacency_matrix[i][j] = (adjacency_matrix[i][j] * 17) % 26;
        else
            for (float x = 0; x < 50; x++){
                if (x * -26 < adjacency_matrix[i][j])
                    adjacency_matrix[i][j] = adjacency_matrix[i][j] + x * 26;
            }
    }
for(int i=0;i<3;i++)
对于(int j=0;j<3;j++){
if(邻接矩阵[i][j]<0)
邻接矩阵[i][j]=(邻接矩阵[i][j]*17)%26;
其他的
用于(浮动x=0;x<50;x++){
if(x*-26<邻接矩阵[i][j])
邻接矩阵[i][j]=邻接矩阵[i][j]+x*26;
}
}

模运算符
%
仅适用于整数。C++11()5.6-2(重点):

*和/的操作数应具有算术或非范围枚举类型%的操作数应具有整数或非范围枚举类型对操作数执行通常的算术转换,并确定结果的类型。

浮点值将转换为整数值,这可能导致精度降低(丢失小数部分)。编译器不会逐个检查是否确实存在缩减。它正确地报告说,这种削减是可能的


如果在
邻接矩阵中只有整数,请使用多种整数类型中的一种,而不是浮点。如果确实可能有真正的浮点值,则可以使用。

模运算符
%
仅适用于整数。C++11()5.6-2(重点):

*和/的操作数应具有算术或非范围枚举类型%的操作数应具有整数或非范围枚举类型对操作数执行通常的算术转换,并确定结果的类型。

浮点值将转换为整数值,这可能导致精度降低(丢失小数部分)。编译器不会逐个检查是否确实存在缩减。它正确地报告说,这种削减是可能的


如果在
邻接矩阵中只有整数,请使用多种整数类型中的一种,而不是浮点。如果你真的有真正的浮点值,那么你可以使用。

对不起,我是新来的,有时候我会忘记这个礼节。它是C++,矩阵是浮点,它只是规则数。整数,我只是用浮点数以防万一,但我不相信它们中的任何一个都是小数。对不起,我是新来的,有时我会忘记这个礼节。它是C++,矩阵是浮点,它只是规则数。整数,我只是用浮点数以防万一,但我不相信它们中的任何一个都是小数。