最近又和朋友討論到:如果使用一般計算機來計算 10 位元數以上的乘法幾乎是不太可能,又如果使用電腦程式來運算,也只能得到有效位數受限的近似值。如果用 Excel 來設計一個多位數的乘法應該是很有趣。

記得多年前有設計了一個 10 位元以上的乘法,並且能看到運算過程和標準結果(如下圖)。這是一個以 12 位元數乘以 12 位元數的例子。

你可以參考以前文章的介紹:http://isvincent.pixnet.net/blog/post/30285233

但是朋友說看不懂這個做法,所以我又設計了另一個較易閱讀的公式。

以下這個 3 位元 X 3 位元的運算結果如下圖:

儲存格F3:=$F$2*H$1+$F$2*G$1*10+$F$2*F$1*100

複製儲存格F3,貼至儲存格C3:F3。

比較上下兩張圖,只要取出左邊算來第 3 碼即可。

修改程式如下:

儲存格F3:=VALUE(LEFT(RIGHT("00"&$F$2*H$1+$F$2*G$1*10+$F$2*F$1*100,3),1))

公式 VALUE(LEFT(RIGHT("00"& … ,3),1)):

(1) 將原式先串接 "00",因為某些運算結果只有 2 碼

(2) 以 RIGHT 函數取出右邊數來 3 碼

(3) 以 LEFT 函數取出左邊數來第 1 碼

(4) 以 VALUE 函數將文字型態的數字轉換為數字型態

如法炮製:

儲存格E4:=VALUE(LEFT(RIGHT("00"&$E$2*H$1+$E$2*G$1*10+$E$2*F$1*100,3),1))

複製儲存格E4,貼至儲存格B4:E4。

儲存格D5:=VALUE(LEFT(RIGHT("00"&$D$2*H$1+$D$2*G$1*10+$D$2*F$1*100,3),1))

複製儲存格D5,貼至儲存格A5:D5。

最後要計算乘積和:

儲存格A6:=MOD(SUM(A3:A5)+INT((SUM(B3:B5)+INT(SUM(C3:C5))/10)/10),10)

公式中 INT(XX/10)可以取出 XX 的十位數,MOD(XX,10)可以取出個位數。

利用以上原則,再將計算的位元數擴充到更多位數。

arrow
arrow
    全站熱搜

    vincent 發表在 痞客邦 留言(0) 人氣()