` Comment on an Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Add a comment to an Icetips Article

Please add your comments to this article. Please note that you must provide both a name and a valid email address in order for us to publish your comment. Comments are moderated and are not visible until they have been approved. Spam is never approved!

Your Name:  
Email:  
Header text/Subject:  

Please enter your comment in the box below:

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

Par2: Decimal to Fraction
2004-05-03 -- Michael Ware
 
I'm sure this function could be optimized a bit, but it runs fast enough for me: RealToFraction PROCEDURE (REAL Num) ! Declare Procedure i LONG HldCheck LONG BreakVal LONG Numerator LONG Denominator LONG StringValue STRING(50) CODE StringValue = Num i = INSTRING('.',StringValue,1,1) IF ~i DO ExitProc END StringValue = SUB(StringValue,i+1,LEN(CLIP(StringValue))) BreakVal = LEN(clip(StringValue)) IF BreakVal > 46 ! error check for string slicing BreakVal = 46 END ! Parse out the Numerator from the decimal Numerator = 0 Denominator = 1 LOOP i = 1 TO BreakVal IF StringValue[( i ):(i+3)] = '0000' THEN BREAK. Numerator = 10*Numerator + StringValue[i] Denominator = 10*Denominator END IF ~Numerator StringValue = Num DO EXITPROC END LOOP HldCheck = Numerator BreakVal = 1+SQRT(Denominator) LOOP i = 2 TO BreakVal IF (Numerator % i) = 0 AND (Denominator % i) = 0 Numerator = Numerator/i Denominator = Denominator/i BREAK END END IF HldCheck=Numerator THEN BREAK. END StringValue = INT(Num) & ' ' & Numerator & '/' & Denominator DO ExitProc ExitProc ROUTINE RETURN (StringValue)


Today is May 7, 2024, 3:42 pm
This article has been viewed 35118 times.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: