Some code to convert a decimal number to a fraction, of course there is no way to convert all decimals, but you can achieve an acceptable approximation, depending on the level of accuracy you need.

Here is an implementation of the continued fractions to get the fractions at an accepted accuracy.

DecNum = the number to convert to fraction
accuracy = how many decimals after point to compare
fractype = zero for only fractions or anything other that zero whole number & fractions ie: 13.25 = 53/4 = 13 1/4​

'
Code:
```#COMPILE EXE     ' PBWIN 10, PBCC 6
#DIM ALL
#UNIQUE VAR ON
%Unicode = 1

FUNCTION Decimal2Fraction(DecNum AS EXT, Accuracy AS LONG, fractype AS LONG) AS WSTRING
' It uses the concept of continued fractions to calculate an approximated fraction
'  DecNum   = the number to convert to fraction
'  accuracy = how many decimals after point to compare  --- I find 4 good for my needs (like construction)
'  fractype = only fractions or whole number & fractions   ie:  13.25 = 53/4  = 13 1/4
LOCAL z AS EXT
LOCAL fraNum AS EXT
LOCAL preDen AS EXT
LOCAL counter AS LONG
LOCAL temp AS EXT

IF FRAC(DecNum) = 0 THEN FUNCTION = FORMAT\$(DecNum) : EXIT FUNCTION   ' it's a whole number, no decimal
' Initialize some values
z      = DecNum
preDen = 0
counter = 0   'just to prevent endless loop

DO
z = (1 / (z - INT(z)))
preDen = temp
fraNum = INT(DecNum * fraDen + 0.5)
counter = counter + 1
LOOP UNTIL (ABS((DecNum - (fraNum / fraDen))) < 10^-(Accuracy)) OR (z = INT(z)) OR (counter = 500)

IF Fractype = 0 OR FIX(fraNum/fraDen) = 0 THEN                 ' 0        --> fraction only  13.25   =  53/4
FUNCTION  = FORMAT\$(fraNum) & "/" & FORMAT\$(fraDen)
ELSE                                                           ' not zero --> whole number & fraction  13.25   =  13 1/4
ELSE
END IF
END IF

END FUNCTION

'----------------------- Demo the function
FUNCTION PBMAIN () AS LONG
LOCAL sBuffer AS STRING
LOCAL lCount AS LONG
LOCAL DecNum() AS EXT
DIM DecNum(14)

ARRAY ASSIGN DecNum() = 5.015625##, 6.03125##, -13.0625##, 534.75##, 13.4##,   -2.5##,    0.1111111##, 0.125##, 0.1428571##, 0.1667##, 0.200##, 0.25##, 0.33333##, 0.5##, 0.999999##
'13 2/5    -2 1/2     1/9          1/8      1/7                  1/6       1/5      1/4     1/3        1/2    1

FOR lCount = 0 TO 14
sBuffer += FORMAT\$(DecNum(lCount)) + \$TAB+ \$TAB+ Decimal2Fraction(DecNum(lCount), 4, 0) _
+ \$TAB+ \$TAB + Decimal2Fraction(DecNum(lCount), 4, 1) + \$LF
NEXT

#IF %DEF(%PB_CC32)           ' Deal with PBCC not printing stringvars with \$LF and \$tab correctly
LOCAL lLoop AS LONG
LOCAL sTemp2 AS WSTRING
lCount = PARSECOUNT(sBuffer, \$LF)
FOR lLoop = 1 TO lCount
sTemp2 = PARSE\$(sBuffer,\$LF,lLoop)
COLOR 7: ? PARSE\$(sTemp2, \$TAB+\$TAB, 1), : COLOR 2: ? PARSE\$(sTemp2, \$TAB+\$TAB, 2), : COLOR 3: ? PARSE\$(sTemp2, \$TAB+\$TAB, 3)
NEXT lCount
WAITKEY\$
#ELSE                        ' PBWin
? sBuffer
#ENDIF
END FUNCTION
'```