簡體   English   中英

不使用*和/運算符將兩個浮點數相乘和相除

[英]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年前。

然后我把它寫在紙上。 乘起來並不難,盡管我承認使用*運算符將兩個一位數字值相乘。 但是您可以實現integerMultiply方法。

如果您可以長期在紙上做,則可以為其編寫算法。 但這對於這里的答案來說太長了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM