成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

如何計(jì)算大數(shù)減法

在之前,我們已經(jīng)討論了如何進(jìn)行大數(shù)加法的計(jì)算。現(xiàn)在,我們將要討論如何進(jìn)行大數(shù)減法的計(jì)算。雖然思路和大數(shù)加法類似,但是還是有一些微妙的不同之處。將數(shù)值轉(zhuǎn)為字符串在Flash程序中,我們可以通過(guò)在文本框中

在之前,我們已經(jīng)討論了如何進(jìn)行大數(shù)加法的計(jì)算。現(xiàn)在,我們將要討論如何進(jìn)行大數(shù)減法的計(jì)算。雖然思路和大數(shù)加法類似,但是還是有一些微妙的不同之處。

將數(shù)值轉(zhuǎn)為字符串

在Flash程序中,我們可以通過(guò)在文本框中輸入來(lái)獲取大數(shù)。這時(shí),大數(shù)已經(jīng)被轉(zhuǎn)換成了字符串。需要注意的是,字符串末尾可能會(huì)多出一個(gè)不可見(jiàn)的空字符,所以在求長(zhǎng)度時(shí)需要減去1。以下是將大數(shù)A和B轉(zhuǎn)換為字符串的示例代碼:

```as3

var A:String Text1.text;

var B:String Text2.text;

var j:int A.length - 1;

var k:int B.length - 1;

var len:int j > k ? j : k; //取得最長(zhǎng)數(shù)位個(gè)數(shù)

```

處理結(jié)果為負(fù)數(shù)

首先,我們需要判斷數(shù)位,保證被減數(shù)A大于減數(shù)B。如果A的數(shù)位少于B,則交換兩個(gè)數(shù)及數(shù)位個(gè)數(shù)。同時(shí),我們需要將結(jié)果標(biāo)記為負(fù)數(shù)。以下是處理結(jié)果為負(fù)數(shù)的示例代碼:

```as3

if (j < k) {

var s:String A;

A B;

B s;

j k;

k j;

sign "-";

} else if (Number(A) < Number(B)) {

s A;

A B;

B s;

s j;

j k;

k s;

sign "-";

}

```

補(bǔ)充數(shù)位使兩數(shù)數(shù)位相同

如果兩個(gè)數(shù)的數(shù)位不同,我們需要用0在較小的數(shù)的最高位前面添加數(shù)位,使兩個(gè)數(shù)的數(shù)位相同。以下是補(bǔ)充數(shù)位的示例代碼:

```as3

while (k < j) {

B "0" B;

k ;

}

```

分割字符到數(shù)組

與其他語(yǔ)言如VB、C不同的是,大數(shù)的最高位在數(shù)組的首位。以下是將大數(shù)A和B分割為數(shù)組X和Y的示例代碼:

```as3

var X:Array [];

var Y:Array [];

for (var i:int len; i > 0; i--) {

X[i-1] (i-1); //字符在字符串中最大索引值比個(gè)數(shù)少1

Y[i-1] (i-1);

}

```

模擬數(shù)組對(duì)應(yīng)元素相減

接下來(lái),我們需要模擬數(shù)組對(duì)應(yīng)元素相減,并考慮可能的退位情況。以下是模擬數(shù)組對(duì)應(yīng)元素相減的示例代碼:

```as3

var R:Array [];

for (i len; i > 0; i--) {

if (Number(X[i-1]) < Number(Y[i-1])) {

//不夠減

if (R[i-2] undefined) {

R[i-2] 0;

}

R[i-2] - 1; //從上位借1

R[i-1] Number(X[i-1]) 10 - Number(Y[i-1]); //借1當(dāng)10

} else {

R[i-1] Number(X[i-1]) - Number(Y[i-1]); //夠減直接減

}

}

```

去掉最高位的0

最后,我們需要去掉結(jié)果中最高位的0。以下是去掉最高位的0的示例代碼:

```as3

var s:Boolean true; //去掉最高位的0

while (s) {

if (R[0] 0) {

//如果最高位有0

();

} else {

s false; //沒(méi)有0,退出循環(huán)

}

}

```

處理結(jié)果為負(fù)數(shù)的情況

如果結(jié)果為負(fù)數(shù),我們需要在結(jié)果前面添加一個(gè)負(fù)號(hào)。以下是處理結(jié)果為負(fù)數(shù)的示例代碼:

```as3

if (sign "-") {

R.unshift("-");

}

```

輸出結(jié)果

最后,我們可以將結(jié)果輸出到控制臺(tái)或者文本框中。以下是將結(jié)果輸出到控制臺(tái)的示例代碼:

```as3

trace((";"));

```

你也可以將結(jié)果輸出到文本框中,例如:

```as3

Text3.text (";");

```

這是一個(gè)根據(jù)實(shí)踐總結(jié)的經(jīng)驗(yàn),絕對(duì)原創(chuàng)的方法。希望對(duì)你有所幫助!

作者:張志晨

日期:2012.5.16

標(biāo)簽: