我的数据网格有一个深度维度列,显示分数(例如,一个维度是24 3/8)。我有能力选择文本(分数或小数),但基本上我需要能够从 24 3/8 来回转换为 24.375 。< / p>
为什么需要十进制格式: 我有用于过滤深度维度列的复选框,因此我需要该逻辑的十进制形式(例如,复选框以查看20到26之间的过滤器深度尺寸)。
为什么需要分数格式:我需要分数格式,因为深度维度数据将在应用程序的另一部分中作为字符串引用。当在dataGrid中使用此格式时,过滤器不起作用,因为它不会将24 3/8识别为数字/ int。
所以基本上我正在寻找一种方法来转换两种格式, 24 3/8到24.375 和 24.375到24 3/8 。
再一次,我为混淆道歉 - 我可以根据需要重新编辑和/或添加更多详细信息。
提前致谢!
- moe
答案 0 :(得分:0)
为什么需要分数格式:我需要分数格式 因为深度维度数据将作为字符串引用 该申请的另一部分。
您需要分数格式的原因似乎很奇怪。您是否了解可以通过投射Number
在String
中使用 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
输出:
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;
}
}
}
但也许你有其他原因。以下代码来自此链接:Decimal to Fraction。我还没有测试过它。
undefined