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}\]