2010年1月25日 星期一

Excel-計算10位元數以上的乘法

一般使用計算機要計算10位元數以上的乘法幾乎是不太可能,如果使用電腦程式來運算,也只能得到有效位數有限的近似值。如果用Excel來設計一個10位元數以上的乘法,並且能看到運算過程和標準結果呢?如下圖,這是一個以12位元數乘以12位元數的例子。

儲存格Y3:=MOD($Y$2*Y$1+INT(($Y$2*Z$1+INT($Y$2*AA$1/10))/10),10)

儲存格X4:=MOD($X$2*Y$1+INT(($X$2*Z$1+INT($X$2*AA$1/10))/10),10)

儲存格W5:=MOD($W$2*Y$1+INT(($W$2*Z$1+INT($W$2*AA$1/10))/10),10)

儲存格V6:=MOD($V$2*Y$1+INT(($V$2*Z$1+INT($V$2*AA$1/10))/10),10)

儲存格U7:=MOD($U$2*Y$1+INT(($U$2*Z$1+INT($U$2*AA$1/10))/10),10)

儲存格T8:=MOD($T$2*Y$1+INT(($T$2*Z$1+INT($T$2*AA$1/10))/10),10)

儲存格S9:=MOD($S$2*Y$1+INT(($S$2*Z$1+INT($S$2*AA$1/10))/10),10)

儲存格R10:=MOD($R$2*Y$1+INT(($R$2*Z$1+INT($R$2*AA$1/10))/10),10)

儲存格Q11:=MOD($Q$2*Y$1+INT(($Q$2*Z$1+INT($Q$2*AA$1/10))/10),10)

儲存格P12:=MOD($P$2*Y$1+INT(($P$2*Z$1+INT($P$2*AA$1/10))/10),10)

儲存格O13:=MOD($O$2*Y$1+INT(($O$2*Z$1+INT($O$2*AA$1/10))/10),10)

儲存格N14:=MOD($N$2*Y$1+INT(($N$2*Z$1+INT($N$2*AA$1/10))/10),10)

比較一下這些儲存格,你就會發現其間的規則,並將儲存格往左邊複製。

儲存格Y15:=MOD(SUM(Y3:Y14)+INT((SUM(Z3:Z14)+INT(SUM(AA3:AA14))/10)/10),10)

將儲存格往左邊複製。

有了這個好用的工具,可以得到一些有趣的乘法結果,參考下圖:

111111111 X 111111111 = 12345678987654321

上求的算式,如果使用Excel儲存格相乘,將得到1.23457E+16,即使修正儲存格數值格式,也只能得到12345678987654300,而非精準的答案。但是使用上述的計算方式,可以得到完整的結果。

你可以修改這個Excel試算表,減少位數或增加位數,甚至求得100位數X100位數,也不是難事。

沒有留言:

張貼留言

好康東東