Cogniza | Business-Intelligence Specialists

Oct/05

26

Crystal Reports: DecimalToFraction() Function

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

 

<<

>>

Theme Design by devolux.nh2.me