0

指数を固定小数に変換する方法。例:2.5e12、0.12323e-11など

4

2 に答える 2

1

NumberFormatterFlash / Flexでは、クラスの1つを使用できます。以下は、Flex 3(MX)を使用した例NumberFormatterです。それぞれが提供するAPIのドキュメントを見てください。それらは互いに少し異なります。

var n:Number = 3 * .0000000001;
trace(n); // 3e-10
var f:NumberFormatter = new NumberFormatter();
f.precision=10;
trace(f.format(n)); // 0.0000000003

NumberFormatterクラスには3つあり、1つは純粋なFlash(非Flex)用、もう1つはFlex 3用、およびFlex4バージョン用です。最初と最後のものは、ユーザーのロケールに固有の数値もフォーマットします(必要に応じて、ピリオドの代わりにコンマを使用しますなど)。

ドキュメントへのリンクは次のとおりです。

于 2013-03-08T07:48:17.917 に答える
0
public function formatIntoFixedValue(value:Object):Object
            {
                var isNegativeNum:Boolean ;
                var isNegativeExp:Boolean;
                var isDecimal:Boolean;
                var splitNums:Array;
                var splitFixedNum:Array;
                var leftDecPlaceCount:Number=0;
                var rightDecPlaceCount:Number=0;
                var exponentNum=0;
                var finalNum:String;
                var valueNum:Number=Number(value);
                var valueStr:String = valueNum.toString();

//指数リターンではありません

            if(valueStr.indexOf("e")<0)
            return valueStr;

            if(valueNum<0)

//数値が負かどうか

                isNegativeNum=true;
            else
                isNegativeNum=false;

            splitFixedNum= valueStr.split("e");

            if(Number(splitFixedNum[1])<0)

//指数が負であるかどうか

                isNegativeExp=true;
            else 
                isNegativeExp=false;

            exponentNum=Math.abs(Number(splitFixedNum[1]));//-7

//スペースを削除します
splitFixedNum[0]= StringUtil.trimArrayElements(splitFixedNum [0]、 "");

//存在する場合、開始からマイナス記号を削除します。splitFixedNum [0] = splitFixedNum [0] .toString()。replace( "-"、 "");

//開始の熱狂者を削除しています

            finalNum=Number(splitFixedNum[0]).toString(); 

//10進数かどうか

            if(finalNum.toString().indexOf(".")>=0)
            {
            isDecimal=true;
            }
            else 
            isDecimal=false;

///指数はゼロです

            if(exponentNum==0)
            return finalNum;

// numが10進数の場合if(isDecimal){var expDiff:Number;

                splitNums= String(splitFixedNum[0]).split(".");

                splitNums[0]=Number(splitNums[0]).toString();
                if(splitNums[0]!="0")
                {



                finalNum=splitNums[0].toString().concat(splitNums[1]); 
                leftDecPlaceCount=splitNums[0].toString().length;

                }
                else
                {



                finalNum=splitNums[1]; 
                leftDecPlaceCount=0;
                }


                rightDecPlaceCount=splitNums[1].toString().length;

                if(isNegativeExp)
                    expDiff=exponentNum-leftDecPlaceCount;

                else
                    expDiff=exponentNum-rightDecPlaceCount;

//expdiffがゼロより大きい場合はゼロを連結します

                if(expDiff>0)
                {
                        var zeros:String="";

                        for(var i:Number=0;i<expDiff;i++)
                            zeros+="0";

                        if(isNegativeExp)   
                        finalNum="0."+zeros+finalNum;
                        else
                        finalNum= finalNum+zeros;   

                }

// exp diffがゼロ未満の場合、数値間で。(ドット)を移動します

                else if(expDiff<0)
                {
                    var s:String;
                    expDiff= Math.abs(expDiff);
                    if(isNegativeExp)
                    s =finalNum.substr(0,expDiff)+"."+finalNum.substr(expDiff,finalNum.length);
                    else
                    s =finalNum.substr(0,(leftDecPlaceCount+rightDecPlaceCount)-expDiff)+"."+finalNum.substr((leftDecPlaceCount+rightDecPlaceCount)-expDiff,finalNum.length);
                    finalNum=s;
                }
                else
                {
                    if(isNegativeExp)
                    finalNum= "0."+finalNum;

                }
            }
            else
            {

                        var zeros:String="";

                        for(var i:Number=0;i<exponentNum-finalNum.length;i++)
                            zeros+="0";

                        if(isNegativeExp)   
                        finalNum="0."+zeros+finalNum;
                        else
                        finalNum= finalNum+zeros;
            }   

            if(isNegativeNum)
            finalNum ="-"+ finalNum;

            return finalNum.toString();
        }
于 2013-03-08T05:09:40.487 に答える