2015-10-01 15 views
-1

我的數據網格有一個顯示分數的深度維度列(例如,一個維度是24 3/8)。我有能力選擇文本(小數或小數),但基本上我需要能夠從24 3/824.375來回轉換。Flash Builder 4.6 | mx:DataGrid |小數到小數......或小數到小數格式化

爲什麼需要十進制格式: 我有複選框來過濾深度尺寸列,因此我需要爲邏輯十進制形式(例如複選框看到20和26之間的過濾器深度尺寸)。

爲什麼需要分數格式:我需要分數格式,因爲深度維數據將作爲應用程序的另一部分中的字符串引用。在dataGrid中使用此格式時,過濾器不起作用,因爲它不會將24 3/8識別爲數字/ int。

所以基本上我正在尋找一種方式來在兩種格式之間進行轉換,24 3/8至24.37524.375至24 3/8

再一次,我對此感到抱歉 - 如果需要,我可以重新編輯和/或添加更多細節。

在此先感謝!

--moe

+0

這沒有任何意義,小數和小數在數學中是相同的東西。如果你不是在談數學,那麼就這樣說,然後編輯問題。 – BotMaster

+0

對不起,我感到困惑 - 我已經更新了一下這個問題,這有幫助嗎? – user3723584

+0

這仍然需要翻譯來表示任何東西。用簡單的英文表示:「datagrid具有維度」是指無法格式化的組件的寬度和高度。另一方面,這個「數據網格有一個名爲'尺寸'的字段,其文本顯示爲小數或分數」。重寫整個事物,這意味着其他人可以理解的東西。 – BotMaster

回答

0

爲什麼需要分數格式:我需要的分數格式 因爲深度尺寸數據將被作爲一個字符串 應用程序的另一部分引用。

你需要分數格式的理由似乎很奇怪。你知道你可以在String中使用Number數據類型嗎?

 var decimalNum:Number = 3.14; 

     //concatenating a Number with a String automatically casts it 
     var autoCastString:String = "I want to eat some " + decimalNum; 
     trace(autoCastString); 

     // cast as String type 
     var decimalString:String = String(decimalNum); 

     trace("Mmmm! I like", decimalString); 

輸出:

I want to eat some 3.14 
Mmmm! I like 3.14 

但是,也許你還有其他的原因。以下代碼來自此鏈接:Decimal to Fraction。我沒有測試過它。

package com.lookmum.util 
{ 
    public class Fraction 
    { 
     private static var it   :Number = 0; 
     public static var iterationLimit:Number = 10000; 
     public static var accuracy :Number = 0.00001; 

     public function Fraction() 
     { 

     } 

     private static function resetIt():void 
     { 
      it = 0; 
     } 

     private static function addIt():Boolean 
     { 
      it++; 
      if (it == iterationLimit) 
      { 
       trace('error : too many iterations'); 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 

     public function getFractionString(num:Number):String 
     { 
      var fracString:String; 
      var fracArray:Array = getFraction(num); 
      switch (fracArray.length) 
      { 
       case 1 : 
        fracString = num.toString(); 
        break; 
       case 2 : 
        fracString = fracArray[0].toString() + '/' + fracArray[1].toString(); 
        break; 
       case 3 : 
        fracString = fracArray[0].toString() + ' ' + fracArray[1].toString() + '/' + fracArray[2].toString(); 
        break; 
      } 
      return fracString; 
     } 

     public function getFraction(num:Number):Array 
     { 
      var fracArray:Array = new Array(); 
      var hasWhole:Boolean = false; 
      if (num >= 1) 
      { 
       hasWhole = true; 
       fracArray.push(Math.floor(num)); 
      } 
      if (num - Math.floor(num) == 0) 
      { 
       return fracArray; 
      } 
      if (hasWhole) 
      { 
       num = num - Math.floor(num); 
      } 
      var a:Number = num - int(num); 
      var p:Number = 0; 
      var q:Number = a; 

      resetIt(); 

      while (Math.abs(q - Math.round(q)) > accuracy) 
      { 
       addIt(); 
       p++; 
       q = p/a; 
      } 
      fracArray.push(Math.round(q * num)); 
      fracArray.push(Math.round(q)); 
      return fracArray; 
     } 
    } 
} 
+0

謝謝TOMATO!一旦我完成了這個任務,我會讓你知道! – user3723584