微信小游戲:超大數(shù)值計算

測試代碼:

import {large_number} from "./large_number";

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property(cc.Label)
    label: cc.Label = null;

    @property
    text: string = 'hello';

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
        let large_number_es = new large_number();

        var b = [199999999];
        var res = large_number_es._ajust_bit_value(b);
        console.log("正確的顯示,自動進(jìn)位1999:");
        res = large_number_es.large_dis(res);
        console.log(res);

        var c = [1,0,0,0,0,0];
        var res = large_number_es._ajust_bit_value(c);
        console.log(res);
        console.log("正確的顯示,消除前面的0000001");
        res = large_number_es.large_dis(res);
        console.log(res);

        var a = [1,1,5];
        var b = [0,999,5];
        console.log("加法1001+5999000:");
        res = large_number_es.large_add(a,b);
        console.log(res);

        var a = [1,1];
        var b = [0,999,5];
        console.log("減法錯誤:出現(xiàn)負(fù)數(shù)");
        res = large_number_es.large_minus(a,b);
        console.log(res);

        var a = [1,1,5,2,143,4];
        var b = [0,999,5,1,143,4];
        console.log("減法正確");
        res = large_number_es.large_minus(a,b);
        console.log(res);
        res = large_number_es.large_dis(res['cal']);
        console.log(res);

        var a = [1,1,9,2,3,4];
        var b = [1,1,9,2,3,4];
        console.log("減法相等");
        res = large_number_es.large_minus(a,b);
        console.log(res);
        res = large_number_es.large_dis(res['cal']);
        console.log(res);

        var a = [999,999];
        var bb = 9999;
        console.log("乘法");
        res = large_number_es.large_mul(a,bb);
        console.log(res);
        res = large_number_es.large_dis(res);
        console.log(res);
    }
}

3.png

計算的類:

export class large_number{
    public unit = ["","K","M","G","aa","ab","ac","ad"]; 
    //加法
    large_add(a,b){
        var temp = [];
        if(a.length<b.length)
        {
            while(a.length < b.length) {
                a.push(0);
            }
        }
        else
        {
            while(a.length > b.length) {
                b.push(0);
            }
        }
        for(var i = 0; i < a.length; i ++) {
            temp[i] = a[i] + b[i];   
        }
        var result = this._ajust_bit_value(temp);        
        return result;
    }

    /**
     * 減法:a-b 
     */
    large_minus(a,b){
        var temp = [];
        var result = {};
        if(a.length<b.length)
        {
            while(a.length < b.length) {
                a.push(0);
            }
        }
        else
        {
            while(a.length > b.length) {
                b.push(0);
            }
        }

        for(var i = 0; i < a.length; i ++) {
            temp[i] = a[i] - b[i];   
        }
        
        if(temp[temp.length -1] < 0)
        {
            //a小于b
            result['code'] = 400;
        }
        else
        {
            //把前面為0的都消除掉            
            var temp_cal = this._ajust_bit_value(temp);
            temp_cal = this._ajust_bit_value(temp_cal);
            result['code'] = 200;
            result['cal'] = temp_cal;
        }
        return result;
    }

   //乘法 a為大數(shù)據(jù),b為乘數(shù)
    large_mul(a,b){
        var temp = [];       
        for(var i = 1; i < a.length; i ++) {
            console.log(a[i],b)
            temp[i-1] = Math.floor(((a[i] * 1000) + a[i-1])*b);
            
            temp[i] = 0;
            //temp[i] = Math.floor(temp[i]);
        }
        console.log(temp)
        var result = this._ajust_bit_value(temp);        
        return result;
    }

    //數(shù)值顯示
    large_dis(a){
        var result:string = '0';
        if(a.length >= 2)
        {
            var result = String(a[a.length -1]) + '.' + String(this._format_num(a[a.length - 2])).substring(0,2) + this.unit[a.length -1];
        }
        else
        {
            var result = String(a[a.length -1]);
        }
        return result;
    }

    //轉(zhuǎn)變成數(shù)值
    convert_number(array){
        let temp:number
        for(let i=1;i<array.length;i++)
        {

        }
    }
    
    //格式化:顯示尾數(shù)數(shù)據(jù)
    _format_num(num) {
        if (num < 10) {
            return "00" + num;
        }
        else if(num < 100) {
            return "0" + num;
        }
        else {
            return "" + num;
        }
    }

    //格式化:運(yùn)算后的數(shù)據(jù)
    _ajust_bit_value(bit_array){
        //加法
        for(var i = 0; i < bit_array.length; i ++) {
            while (bit_array[i] >= 1000) {
                bit_array[i] -= 1000;
                if (i + 1 >= bit_array.length) {
                    bit_array.push(0);                   
                }
                bit_array[i + 1] = bit_array[i + 1] + 1;
            }
        }
        //減法 
        if(bit_array.length >2)
        {            
            for(var j = bit_array.length -1; j > 0; j--)
            {
                if(bit_array[j] == 0)
                {                    
                    bit_array.splice(j,1);
                }
                else
                {
                    break;
                }
            }
        }

        for(var i = 0; i < bit_array.length; i ++) {
            while (bit_array[i] < 0) {
                bit_array[i] += 1000;
                bit_array[i+1] = bit_array[i+1] - 1;
            }
        }        
        
        return bit_array;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市褥紫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖择镇,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異括改,居然都是意外死亡腻豌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門嘱能,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吝梅,“玉大人,你說我怎么就攤上這事惹骂∷招” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵对粪,是天一觀的道長右冻。 經(jīng)常有香客問我,道長著拭,這世上最難降的妖魔是什么纱扭? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮儡遮,結(jié)果婚禮上乳蛾,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好屡久,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布灾测。 她就那樣靜靜地躺著苫费,像睡著了一般路幸。 火紅的嫁衣襯著肌膚如雪脐雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天筛欢,我揣著相機(jī)與錄音浸锨,去河邊找鬼。 笑死版姑,一個胖子當(dāng)著我的面吹牛柱搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剥险,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聪蘸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了表制?” 一聲冷哼從身側(cè)響起健爬,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎么介,沒想到半個月后娜遵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壤短,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年设拟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片久脯。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纳胧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帘撰,到底是詐尸還是另有隱情跑慕,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布骡和,位于F島的核電站相赁,受9級特大地震影響相寇,放射性物質(zhì)發(fā)生泄漏慰于。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一唤衫、第九天 我趴在偏房一處隱蔽的房頂上張望婆赠。 院中可真熱鬧,春花似錦、人聲如沸休里。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妙黍。三九已至悴侵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拭嫁,已是汗流浹背可免。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留做粤,地道東北人浇借。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像怕品,于是被迫代替她去往敵國和親妇垢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1肉康、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,981評論 3 119
  • 本來今天是無驚無險闯估,風(fēng)平浪靜的結(jié)束一天的日程的,不過沒想到下午竟然出了點(diǎn)小狀況迎罗。 多年一直沒有事情發(fā)生的QQ竟然突...
    易水瀚閱讀 378評論 0 1
  • 游走于這個安靜的城市 重溫曾一起走過的每一個角落 滿目尋覓 哪一個身影能與你的重疊 渴望有一次重逢 我闖進(jìn)你的視野...
    淺黛盈盈閱讀 274評論 2 3
  • 一花一世界睬愤,我的世界里沒有你,你的世界里沒有我纹安,如果我們的世界里有彼此尤辱,如果我們大家都是過著花花世界……。噓厢岂!希言...
    李修竹閱讀 195評論 0 0
  • 本文案例和圖片均來自網(wǎng)絡(luò)塔粒,與現(xiàn)實無關(guān)结借,請勿對號入座。 網(wǎng)友自述: “我和妻子戀愛四年多卒茬,結(jié)婚馬上滿一年船老,還沒要孩子...
    古風(fēng)心理咨詢閱讀 2,756評論 0 2