卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何計算大數減法

在之前,我們已經討論了如何進行大數加法的計算?,F在,我們將要討論如何進行大數減法的計算。雖然思路和大數加法類似,但是還是有一些微妙的不同之處。將數值轉為字符串在Flash程序中,我們可以通過在文本框中

在之前,我們已經討論了如何進行大數加法的計算?,F在,我們將要討論如何進行大數減法的計算。雖然思路和大數加法類似,但是還是有一些微妙的不同之處。

將數值轉為字符串

在Flash程序中,我們可以通過在文本框中輸入來獲取大數。這時,大數已經被轉換成了字符串。需要注意的是,字符串末尾可能會多出一個不可見的空字符,所以在求長度時需要減去1。以下是將大數A和B轉換為字符串的示例代碼:

```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; //取得最長數位個數

```

處理結果為負數

首先,我們需要判斷數位,保證被減數A大于減數B。如果A的數位少于B,則交換兩個數及數位個數。同時,我們需要將結果標記為負數。以下是處理結果為負數的示例代碼:

```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 "-";

}

```

補充數位使兩數數位相同

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

```as3

while (k < j) {

B "0" B;

k ;

}

```

分割字符到數組

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

```as3

var X:Array [];

var Y:Array [];

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

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

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

}

```

模擬數組對應元素相減

接下來,我們需要模擬數組對應元素相減,并考慮可能的退位情況。以下是模擬數組對應元素相減的示例代碼:

```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當10

} else {

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

}

}

```

去掉最高位的0

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

```as3

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

while (s) {

if (R[0] 0) {

//如果最高位有0

();

} else {

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

}

}

```

處理結果為負數的情況

如果結果為負數,我們需要在結果前面添加一個負號。以下是處理結果為負數的示例代碼:

```as3

if (sign "-") {

R.unshift("-");

}

```

輸出結果

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

```as3

trace((";"));

```

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

```as3

Text3.text (";");

```

這是一個根據實踐總結的經驗,絕對原創(chuàng)的方法。希望對你有所幫助!

作者:張志晨

日期:2012.5.16

標簽: