給定兩個數,相乘如何得到高精度的結果,給定的兩個數,不確定是不是浮點數,即可能乙個數帶多位小數,另乙個帶小數,或者兩個數都帶多位小數,或都不帶小數,針對這些情況,程式應該都要考慮,所謂的高精度其實就是看兩個數的小數字有多少,那麼其結果的小數字數應該為兩數小數字數之和。
針對上述描述,其實大部分思路首先想到的應該是用字串來表示這兩個數,帶小數點和不帶小數點最終都可轉換成類似於兩個大整數相乘的情況,在最後考慮把小數點放到結果的合適位置即可
/*two float multipy, design a high-precision algorithm
*/#include
#include
#include
#include
using
namespace
std;
/** 函式:實現兩數相乘,並在合適位置插入小數點,posdot為兩數小數字數之和
*/void big_multi(const
char *str1,const
char *str2,int
posdot)
//判斷逐位相乘的結果是否大於10,如果大於10要從後向前進製
for(i=rlen-1;i>0;--i)
}//判斷結果開頭是否是以0開頭的,如果是要去掉
i=0;
while(presult[i]==0
) i++;
//小數點位置應為從後往前posdot位
j=i;
while(jcout
<}int
main()
return0;
}
c 高精度乘法(大數乘法)
對於計算機無法用普通資料型別 如 longint 表示的大整數進行乘法運算,稱為高精度乘法。高精度乘法主要包括以下幾個要求及過程 1 為了獲取輸入數字的每一位的值,包括個位,十位等,輸入整型的資料是無法滿足的,因此,輸入資料必須為字串形式。2 字串轉整型,儲存每一位值於陣列中 3 高精度乘法,重點!...
大數相乘「高精度乘低精度」和「高精度乘高精度」
二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...
高精度演算法 大數乘法
由於相乘的兩個數答案很大超過了longlong或者unsigned longlong,就需要使用大數乘法。給定兩個正整數a和b,請你計算a b的值。輸入格式 共兩行,第一行包含整數a,第二行包含整數b。輸出格式 共一行,包含a b的值。資料範圍 1 a的長度 100000 1 b 10000 輸入樣...