Cpp 7: Fractions

Calculate Fractions For Different Bases
coding
cplusplus
Author

Tony Phung

Published

September 13, 2025

1. Base \(10\), Base \(3\)

In Base \(10\), fractional “building blocks”, denominators are powers of \(10\):

\[\frac{1}{10}, \frac{1}{100}, \frac{1}{1000}... \]

In Base \(3\), similarly, denominators are powers of \(3\):

\[\frac{1}{3}, \frac{1}{9}, \frac{1}{27}... \]

2. What is \(\frac{1}{5}\) in Base \(10\)?

In base \(10\):

\[\frac{1}{5} = 0.d_1d_2d_3...\] equivalent to: \[\frac{1}{5} = \frac{d_1}{10^{1}}+\frac{d_2}{10^{2}}+\frac{d_3}{10^{3}}...\] \[\frac{1}{5} = \frac{d_1}{10}+\frac{d_2}{100}+\frac{d_3}{1000}...\]

or The fraction \(f\):

\[f = \frac{d_1}{10}+\frac{d_2}{100}+\frac{d_3}{1000}...\]

Find \(d1, d2, d3...\)

Multiply by the base \(10\):

\[f = {d_1} +\frac{d_2}{10}+\frac{d_3}{100}...\]

This is a new number:

  • with \(d_1\) as the integer [number before decimal]
  • with \(d_2d_3d_4...\) as the fractional components

\[f = d_1.d_2d_3d_4...\]

Back to the example, \(\frac{1}{5}\) in Base \(10\):

\[\frac{1}{5} = \frac{d_1}{10}+\frac{d_2}{100}+\frac{d_3}{1000}+...\]

Multiple by base, or \(10\):

\[10\times\frac{1}{5} = 10\times\frac{d_1}{10}+10\times\frac{d_2}{100}+10\times\frac{d_3}{1000}+...\]

\[2.0 = d_1+\frac{d_2}{10}+\frac{d_3}{100}+...\]

Since d1, d2… are whole integers

\[\therefore 2.0 = \frac{d_1}{10^{0}} =d_1\] \[0.0=\frac{d_2}{10^{1}}+\frac{d_3}{10^{2}}+...\frac{d_n}{10^{n-1}}\]

3. Python Script: Calculate \(\frac{1}{5}\) in base \(2\)

base_2 = 2
f = 1/5 # fraction
fraction_result = []
fraction_chr = ""
for i in range(1,13):
    f=f*2
    if f>=1:
        f-=1
        fraction_result.append('1')  # list
        fraction_chr+='1'            # string
        next
    else:
        fraction_result.append('0')
        fraction_chr+='0'
    print(i, f)

print(fraction_result)
print(fraction_chr)
1 0.4
2 0.8
3 0.6000000000000001
4 0.20000000000000018
5 0.40000000000000036
6 0.8000000000000007
7 0.6000000000000014
8 0.20000000000000284
9 0.4000000000000057
10 0.8000000000000114
11 0.6000000000000227
12 0.20000000000004547
['0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '1']
001100110011

4. Decimal Fractions

In decimal, base \(10\), decimal point is used:

\[ \begin{array}{rcl} 0.2 & = & \Bigg[2\times\frac{1}{10^{1}}\Bigg] \\ 0.25 & = & \Bigg[2\times\frac{1}{10^{1}}\Bigg] + \Bigg[5\times\frac{1}{10^{2}}\Bigg] \\ 0.123 & = & \Bigg[1\times\frac{1}{10^{1}}\Bigg] + \Bigg[2\times\frac{1}{10^{2}}\Bigg] + \Bigg[3\times\frac{1}{10^{2}}\Bigg]\\ \end{array} \]

5. Binary Fractions

In binary, base \(2\), binary point is used: \[ 0.d_1d_2d_3d_4 = \Bigg[\frac{d_1}{2^{1}}\Bigg] + \Bigg[\frac{d_2}{2^{2}}\Bigg] + \Bigg[\frac{d_3}{2^{3}}\Bigg] + ...\]

\[\begin{array}{rcl} 0.1 & = & \Bigg[1\times\frac{1}{2^{1}}\Bigg] &&&&&&& = & \Bigg[0.500\Bigg] \\ \\ 0.01 & = & \Bigg[0\times\frac{1}{2^{1}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{2}}\Bigg] \\ & = & \Bigg[0\Bigg] &+& \Bigg[0.25\Bigg] &&&&&=& \Bigg[0.2500\Bigg] \\ \\ 0.11 & = & \Bigg[0\times\frac{1}{2^{1}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{2}}\Bigg] \\ & = & \Bigg[0.5\Bigg] &+& \Bigg[0.25\Bigg]&&&&&=& \Bigg[0.7500\Bigg] \\ \\ 0.001 & = & \Bigg[0\times\frac{1}{2^{1}}\Bigg] &+& \Bigg[0\times\frac{1}{2^{2}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{3}}\Bigg] &=&\Bigg[1\times\frac{1}{8}\Bigg] % \\ % & = & \Bigg[0\Bigg] &+& \Bigg[0\Bigg] % &+& \Bigg[0.125\Bigg] &=& \Bigg[0.1250\Bigg] \\ \\ 0.011 & = & \Bigg[0\times\frac{1}{2^{1}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{2}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{3}}\Bigg] \\ & = & \Bigg[0\Bigg] &+& \Bigg[1\times\frac{1}{4}\Bigg] &+& \Bigg[1\times\frac{1}{8}\Bigg] \\ & = & \Bigg[0\Bigg] &+& \Bigg[0.25\Bigg] &+& \Bigg[0.125\Bigg]&&&=& \Bigg[0.3750\Bigg] \\ \\ 0.111 & = & \Bigg[1\times\frac{1}{2^{1}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{2}}\Bigg] &+& \Bigg[1\times\frac{1}{2^{3}}\Bigg] \\ & = & \Bigg[1\times\frac{1}{2}\Bigg] &+& \Bigg[1\times\frac{1}{4}\Bigg] &+& \Bigg[1\times\frac{1}{8}\Bigg] \\ & = & \Bigg[0.5\Bigg] &+& \Bigg[0.25\Bigg] &+& \Bigg[0.125\Bigg]&&&=& \Bigg[0.875\Bigg] \\ \\ 0.1111 & = & \Bigg[0.875\Bigg] &+& \Bigg[1\times\frac{1}{16}\Bigg] &=& \Bigg[0.875\Bigg]&+&\Bigg[0.0625\Bigg]&=&\Bigg[0.9375\Bigg] \end{array}\]