3×3行列と3×1行列の積を求めるプログラムをネットの情報を参考に作りました。
行列内の数値が4桁ほどの整数の場合はうまく出力されます。しかし、実際は以下に示すような桁数が多く、少数が混じっている計算をしたいのですが、値が正しく出力されません。
直すべき点はどこか教えていただきたいです。
よろしくお願いします。
#include <stdio.h>
main()
{
int o, p, q;
int v[3][3] = { {0.00003,0.000144,-0.010793 },{ -0.002352,0.00072,0.451383 },{0.072793,-0.053127,-12.838918} };
int w[3][1]= { {-86157861},{-13984372},{-422159} };
int z[3][1];
for (o = 0; o< 3; ++o) {
for (p = 0; p< 1; ++p) {
z[o][p] = 0;
for (q = 0; q< 3; ++q) {
z[o][p] += v[o][q] * w[q][p];
}
printf("%d ", z[o][p]);
}
printf("\n");
}
return 0;
}