在不使用 * 和 / 运算符的情况下将两个浮点数相乘和除以
Multiplying and Dividing two floating point numbers without using * and / operators
我正在尝试解决如何在不使用 * 和/运算符的情况下乘除两个数字
我尝试使用 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年前的事了。
然后我在纸上解决了它。乘法并不难,尽管不可否认的是,我使用 * 运算符将两位数的值相乘。但是你可以实现一个整数乘法。
如果你能在纸上用长手来做,你可以为它写一个算法。但是在这里回答太长了。
相关文章:
- 为什么将两个浮点数相加会得到一个整数C++?
- 是否可以在 for 循环中添加两个浮点数?
- AVX2:计算 512 个浮点数组的点积
- 编写程序,导入三个浮点数a,b和c.按升序排序
- 在不使用 * 和 / 运算符的情况下将两个浮点数相乘和除以
- 如何线性化两个浮点变量的乘积
- 比较 C++ 中的两个浮点变量
- 有没有更有效的方法可以原子地添加两个浮点数?
- 使用 cin 错误输入多个浮点数
- 添加 2 个浮点数时保持精度
- 如何将 4 个浮点数的 ps 向量转换为 4 个双精度并存储到 pd 数组
- 划分两个浮点数不会给出确切的结果
- 如何找到两个浮点数之间的最短十进制数
- 如何设计一种算法,将两个浮点数相乘而不带"*"?
- 用c++把两个浮点数相乘得到的结果是非数字的
- 在c++中计算两个浮点数之差时,y * (1 - x / y)是否优于y - x ?
- c++将两个浮点数相除得到int
- 如何使用sse将两个浮点数组相乘
- 如何在x86汇编中移动两个浮点数的结果
- 两个浮点数相加时的意外输出