2015-10-01 21 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