如何确定值何时达到1百万,然后是10亿,依此类推?

时间:2018-02-23 23:08:23

标签: actionscript-3 biginteger

我目前正在使用BigInteger as3类(https://github.com/timkurvers/as3-crypto/blob/master/src/com/hurlant/math/BigInteger.as)来允许我的游戏使用非常大的数字,基本上允许我的游戏玩家变得非常“富有”并成为Billionare,Quintillionaire,以及远远超出此范围。使用数字格式或整数时,MAX_VALUE对于我想要完成的事情来说非常低,所以我选择使用BigInteger.as

但是,我有两个问题。

1)当一个值超过100万时,我开始显示这个数字(例如1百万,而不是1,000,000)。这很好用。但是,当我开始显示1,000,2,000,3000等值时,我注意到这些低端值的表示方式不同。例如。 10,000是a000,11,000是b000。我知道BigInteger在其方法中不使用典型的数字格式。当我调用intValue()或valueOf()时,我得到的值是1000是8192,2000是12288.(我已经通过循环检查了这一点,重复添加'1000'。

这是我的代码循环大整数并检查。函数WordNumbers.getWordNumbers()基本上要求传递BigInteger值,并从那里计算出单词名称(例如100万或1000,取决于BigInteger的值)并输出bigInteger.intValue()等。 - 好像,似乎无法找到解决方案!

private function NewTesting():void {
        var popUpString:String = '';

        //Use BigInteger instead
        var addAmount:BigInteger = new BigInteger('1000');
        var sum:BigInteger = new BigInteger('1000');

        var resultsPerPage:Number = 10;
        var totalPages:Number = 5;
        var totalResults:Number = resultsPerPage*totalPages;

        popUpString += 'Starting at value '+sum+'...';
        popUpString += '<br /><br />';

        var i:int;
        for (i=0;i<=totalResults;i++){              
            sum = sum.add('1000');

            popUpString += 'Adding 1000...';
            popUpString += 'Value: '+sum+' - Word: '+WordNumbers.getWordNumbers(sum,0);
            popUpString += '<br /><br />';

            if (i!=0){
                if (i % resultsPerPage == 0){
                    PopUps.HTMLPopUp(popUpString);
                    popUpString = '';
                }
            }
        }
    }

现在,在任何人说我应该先检查其他帖子之前 - 我已经这样做了。它们对我来说没有任何意义,我不确定他们是否像我一样使用相同的3-crypto库。

我的第二个问题2)。主要是我意识到由于使用“大整数”而不是“大数字”,我现在无法访问任何小数位。那么,如果我想向用户显示“1.553百万”那么我不知道该怎么做?

2 个答案:

答案 0 :(得分:0)

您应该尝试阅读文档。 https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html

您必须使用位操作来获取值。

答案 1 :(得分:0)

我只是想回答我自己的问题,我相信我已经解决了。我希望这可以帮助别人。

如果想在AS3中使用非常大的数字,我建议使用Graniteds库。见这里:https://github.com/graniteds/graniteds/blob/master/reference-docs/src/asciidoc/graniteds-bignumbers-flex.adoc

有了上述内容,我现在可以使用Big Number(使用BigDecimal.as)。