26
Crystal Reports: DecimalToFraction() Function
No comments · Posted by Craig Buchanan in Functions, Programming
Abstract
Convert a decimal value to a fractional value.
Function (Numbervar Dec)
NumberVar Zeroes;
NumberVar Denom;
NumberVar Numerator;
NumberVar Whole;
NumberVar CommonDenom;
StringVar StringDec;
StringVar FinalNumerator;
StringVar FinalDenom;
StringVar Fraction;
//Convert the Integer to a String to retrieve the Decimal value.
StringDec := ToText (Dec – (Truncate (Dec)), 10);
//Remove the trailing zeroes and get the exponent.
If StringDec [12] <> “0″ then
Zeroes := 10;
If StringDec [12] = “0″ then
Zeroes := 9
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ then
Zeroes := 8
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ Then
Zeroes := 7
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ Then
Zeroes := 6
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ Then
Zeroes := 5
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ and
StringDec [7] = “0″ Then
Zeroes := 4
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ and
StringDec [7] = “0″ and
StringDec [6] = “0″ Then
Zeroes := 3
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ and
StringDec [7] = “0″ and
StringDec [6] = “0″ and
StringDec [5] = “0″ Then
Zeroes := 2
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ and
StringDec [7] = “0″ and
StringDec [6] = “0″ and
StringDec [5] = “0″ and
StringDec [4] = “0″ Then
Zeroes := 1
Else Zeroes := Zeroes;
If StringDec [12] = “0″ and
StringDec [11] = “0″ and
StringDec [10] = “0″ and
StringDec [9] = “0″ and
StringDec [8] = “0″ and
StringDec [7] = “0″ and
StringDec [6] = “0″ and
StringDec [5] = “0″ and
StringDec [4] = “0″ and
StringDec [3] = “0″ Then
Zeroes := 0
Else Zeroes := Zeroes;
//Initialize the Denominator and Numerator.
Denom := 10 ^ Zeroes;
Numerator := ToNumber (StringDec [3 to (Zeroes + 2)]);
//Calculate the lowest common Denominator and Numerator.
If Dec – Truncate (Dec) = 0 Then
(Numerator := 1;
Denom := 1;)
else If Remainder (Numerator, 25) = 0 Then
(Numerator := Numerator / 25;
Denom := Denom / 25;)
else If Remainder (Numerator, 5) = 0 Then
(Numerator := Numerator / 5;
Denom := Denom / 5;)
else If Remainder (Numerator, 2) = 0 Then
(Numerator := Numerator / 2;
Denom := Denom / 2);
//Calculate the final values for the Numerator and Denominator.
If Remainder (Denom, Numerator) = 0 Then
(FinalNumerator := ToText ((Numerator / Numerator), 0);
FinalDenom := ToText ((Denom / Numerator), 0))
else (FinalNumerator := ToText (Numerator, 0);
FinalDenom := ToText (Denom, 0));
//Build the Fraction
Whole := (Truncate (Dec));
If Whole = 0 Then
FinalNumerator + “/” + FinalDenom
else
ToText (Whole, 0) + ” ” + FinalNumerator + “/” + FinalDenom;
Parameters
- Dec
- decimal value to be converted
Return Value
a string in fractional format
Remarks
None
Example
//returns 1/10
DecimalToFraction (.1)
Requirements
This function requires the use of Crystal Syntax.
No tags
No comments yet.
Leave a Reply
<< Oracle: FAQ
