所以我试图构建一个代码,用于将两个数组的两个数相乘。 例如 阵列1:1 2 3 阵列2:4 5 6 所以我可以将数组1返回为:4 10 18
BigNumber BigNumber::Multiply(const BigNumber & b)
float x = 0;
for (int i = 0; i < size; i++)
{
x = (arr[i])*(b.arr[i]);
arr[i] = (x / 48);
}
return *this;
它一直给我+1或-1的想要结果。
答案 0 :(得分:2)
循环内的计算错误。
让我使用ai
来表示字符a
所代表的数字,并使用与bi
对应的b
。
假设48用于表示字符0,则计算为
(ai+48)*(bi+48)/48
= (ai*bi)/48 + (ai+bi) + 48
这似乎是补充,而不是乘法。
尝试使用这样一个简单的正确表达式:
for (int i = 0; i < size; i++)
{
arr[i] = (arr[i]-'0') * (b.arr[i]-'0') + '0';
}