在不使用 * 和 / 运算符的情况下将两个浮点数相乘和除以



我正在尝试解决如何在不使用 * 和/运算符的情况下乘除两个数字

我尝试使用 for 循环:

for(int a = 1; a<=secondnum; a++)
{
total = firstnum + total;
}
cout << "Total: " << total;

for(b = firstnum; b>=secondnum; b = b-secondnum)
{
total = total + 1;
}
cout << "Answer: " << total;

但是,这仅适用于整数...有没有办法处理浮点值?

在过去(在袖珍计算器等之前(,对数表被用来将乘法和除法变成加减法:

#include <cmath>
double Mult(double a, double b)
{
return exp(log(a)+log(b));
}
double Div(double a, double b)
{
return exp(log(a)-log(b));
}

请注意,这仅适用于正数,但使用绝对值然后给结果正确的符号相对容易。

我实际上在高中就这样做了。我写了一个程序,可以乘以或除以两个任意长的浮点数。基本上,我这样做的方式与通过长乘法/除法完全相同。

我将这两个值保存在十进制数字数组中。

char firstValue[1024];
char secondValue[1024];

我不记得我是否将它们保留为 ASCII 或转换了它们。毕竟,那是40年前的事了。

然后我在纸上解决了它。乘法并不难,尽管不可否认的是,我使用 * 运算符将两位数的值相乘。但是你可以实现一个整数乘法。

如果你能在纸上用长手来做,你可以为它写一个算法。但是在这里回答太长了。

最新更新