0

如何将指数转换为固定十进制。示例:2.5e12 ,0.12323e-11 等

4

2 回答 2

1

在 Flash/Flex 中,您可以使用其中一个NumberFormatter类。下面是使用 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

有 3 个 NumberFormatter 类,一个用于纯 Flash(非 Flex),一个用于 Flex 3 和 Flex 4 版本。第一个和最后一个也将格式化特定于用户区域设置的数字(在适当的情况下使用逗号而不是句点等)。

以下是文档的链接:

于 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("-","");

// 它正在删除 start 的 zeors

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

// 是否为十进制

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

/// 指数为零

            if(exponentNum==0)
            return finalNum;

// 如果 num 是十进制 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;

//如果exp diff大于零连接零

                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 小于零,则在数字之间移动 .(dot)

                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 回答