我目前正在使用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百万”那么我不知道该怎么做?
答案 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)。