A recipe needs \(\frac{3}{4}\) of a cup of flour and you want to make half the recipe. How much flour do you use?
Four friends split a restaurant bill of £37.60 equally. What does each person pay?
You run 2.5 km on Monday and 1.75 km on Wednesday. How far have you run in total?
These are all fraction and decimal problems. The numbers sit between the integers — and the arithmetic for handling them is a small set of rules you can learn once and use everywhere.
9.1 What the notation is saying
The fraction \(\frac{a}{b}\) means “\(a\) divided by \(b\).” The top number is the numerator (how many parts you have); the bottom number is the denominator (how many equal parts make the whole).
Decimals are fractions whose denominators are powers of ten: \[0.3 = \frac{3}{10}, \quad 0.47 = \frac{47}{100}, \quad 0.006 = \frac{6}{1000}\]
They are interchangeable. \(\frac{3}{4} = 0.75\). \(\frac{1}{3} = 0.\overline{3}\) (the bar means the digit repeats forever).
Equivalent fractions:\(\frac{2}{4} = \frac{1}{2}\) because you can divide numerator and denominator by 2. A fraction is in lowest terms when numerator and denominator share no common factor other than 1.
Use the controls below to explore what a fraction looks like — as a divided rectangle and as a position on the number line.
{// Enforce denominator >= numerator by silently clampingconst num = frac1_num;const den =Math.max(frac1_den_raw, num);// --- GCD helper for display in lowest terms ---functiongcd(a, b) { return b ===0? a :gcd(b, a % b); }const g =gcd(num, den);const rn = num / g;const rd = den / g;const decimal = num / den;const lowestLabel = rn === rd?`${rn} (= 1)`: rd ===1?`${rn}`:`${rn}/${rd}`;const W =560, H_rect =80, H_line =70;const PAD =40;const svg = d3.create("svg").attr("viewBox",`0 0 ${W}${H_rect + H_line +20}`).attr("width","100%").attr("style","max-width:560px; display:block; margin:0 auto; font-family:sans-serif;");// ── Area model ──────────────────────────────────────────────const rectW = W -2* PAD;const partW = rectW / den;const rectG = svg.append("g").attr("transform",`translate(${PAD}, 10)`);for (let i =0; i < den; i++) { rectG.append("rect").attr("x", i * partW).attr("y",0).attr("width", partW -1).attr("height", H_rect).attr("fill", i < num ?"#2563eb":"#e5e7eb").attr("stroke","#94a3b8").attr("stroke-width",0.5).attr("rx",2); }// Fraction label centred above the shaded region rectG.append("text").attr("x", (num * partW) /2).attr("y",-4).attr("text-anchor","middle").attr("font-size",13).attr("fill","#1e3a5f").text(`${num}/${den}${g >1?` = ${lowestLabel}`:""} = ${decimal.toFixed(6).replace(/\.?0+$/,"") ||"0"}`);// Shaded count label inside rectangleif (num >0) { rectG.append("text").attr("x", (num * partW) /2).attr("y", H_rect /2+5).attr("text-anchor","middle").attr("font-size",Math.min(14, partW *0.7)).attr("fill","#ffffff").attr("font-weight","bold").text(num === den ?"whole":`${num} part${num >1?"s":""}`); }// Unshaded count labelif (num < den) { rectG.append("text").attr("x", num * partW + ((den - num) * partW) /2).attr("y", H_rect /2+5).attr("text-anchor","middle").attr("font-size",Math.min(13, partW *0.65)).attr("fill","#64748b").text(`${den - num} part${den - num >1?"s":""}`); }// Area model axis label rectG.append("text").attr("x", rectW /2).attr("y", H_rect +14).attr("text-anchor","middle").attr("font-size",11).attr("fill","#64748b").text(`Rectangle divided into ${den} equal part${den >1?"s":""} — ${num} shaded`);// ── Number line ──────────────────────────────────────────────const lineY = H_rect +20;const lineG = svg.append("g").attr("transform",`translate(${PAD}, ${lineY +10})`);// Track line lineG.append("line").attr("x1",0).attr("y1",20).attr("x2", rectW).attr("y2",20).attr("stroke","#94a3b8").attr("stroke-width",2);// Tick at 0 lineG.append("line").attr("x1",0).attr("y1",13).attr("x2",0).attr("y2",27).attr("stroke","#374151").attr("stroke-width",2); lineG.append("text").attr("x",0).attr("y",40).attr("text-anchor","middle").attr("font-size",12).attr("fill","#374151").text("0");// Tick at 1 lineG.append("line").attr("x1", rectW).attr("y1",13).attr("x2", rectW).attr("y2",27).attr("stroke","#374151").attr("stroke-width",2); lineG.append("text").attr("x", rectW).attr("y",40).attr("text-anchor","middle").attr("font-size",12).attr("fill","#374151").text("1");// Fraction position markerconst markerX = decimal * rectW; lineG.append("circle").attr("cx", markerX).attr("cy",20).attr("r",7).attr("fill","#2563eb").attr("stroke","#1e3a5f").attr("stroke-width",1.5);// Value label above marker lineG.append("text").attr("x", markerX).attr("y",10).attr("text-anchor","middle").attr("font-size",12).attr("fill","#1e3a5f").attr("font-weight","bold").text(decimal.toFixed(4).replace(/\.?0+$/,"") ||"0");// Axis label lineG.append("text").attr("x", rectW /2).attr("y",55).attr("text-anchor","middle").attr("font-size",11).attr("fill","#64748b").text("Number line from 0 to 1 — dot shows the same value");return svg.node();}
If the denominator input goes below the numerator, the interactive clamps it to keep the fraction valid (≤ 1). Try setting numerator and denominator to the same value to see what “1 whole” looks like in both views.
Simplify before or after. Before is usually easier.
Dividing fractions
Flip the second fraction and multiply — this is called multiplying by the reciprocal: \[\frac{a}{b} \div \frac{c}{d} = \frac{a}{b} \times \frac{d}{c} = \frac{ad}{bc}\]
“Flip and multiply” works because \(\frac{c}{d} \times \frac{d}{c} = 1\): the two fractions cancel each other out, leaving you with a clean multiplication.
Adding and subtracting fractions
Mixed numbers: convert first. Multiply the whole number by the denominator and add the numerator: \(1\frac{1}{2} = \frac{(1 \times 2) + 1}{2} = \frac{3}{2}\).
You need a common denominator before you can add. The simplest route: multiply both denominators to get one that works for both. \[\frac{a}{b} + \frac{c}{d} = \frac{ad}{bd} + \frac{bc}{bd} = \frac{ad + bc}{bd}\]
Simplify the result.
Converting between fractions and decimals
Fraction → decimal: divide numerator by denominator. Decimal → fraction: write the decimal over its place-value denominator, then simplify.
Why this works
A fraction \(\frac{a}{b}\) is a number. The rules for arithmetic with fractions follow from the same rules that govern whole numbers — distribution, commutativity, and the fact that multiplying by 1 changes nothing. To add \(\frac{a}{b} + \frac{c}{d}\), rewrite the first fraction as \(\frac{a}{b} \times \frac{d}{d} = \frac{ad}{bd}\) and the second as \(\frac{c}{d} \times \frac{b}{b} = \frac{bc}{bd}\). Both multiplications are by 1, so neither fraction’s value changes — only its representation. The result is \(\frac{ad + bc}{bd}\). Division by a fraction is multiplication by its reciprocal because \(\frac{a}{b} \times \frac{b}{a} = 1\) — they are inverses of each other.
Use the calculator below to check any fraction arithmetic. Choose two fractions and an operation; the working is shown step by step.
Code
viewof op_a_num = Inputs.range([1,12], { value:3,step:1,label:"Fraction A — numerator" })
Code
viewof op_a_den = Inputs.range([1,12], { value:4,step:1,label:"Fraction A — denominator" })
Code
viewof op_b_num = Inputs.range([1,12], { value:1,step:1,label:"Fraction B — numerator" })
Code
viewof op_b_den = Inputs.range([1,12], { value:2,step:1,label:"Fraction B — denominator" })
{functiongcd(a, b) { return b ===0? a :gcd(b, a % b); }functionsimplify(n, d) {if (d ===0) return [n, d];const g =gcd(Math.abs(n),Math.abs(d));return [n / g, d / g]; }functionfracStr(n, d) {if (d ===1) return`${n}`;return`${n}/${d}`; }const an = op_a_num, ad = op_a_den;const bn = op_b_num, bd = op_b_den;let steps = [];let rn, rd;if (operation ==="×") { rn = an * bn; rd = ad * bd;const [sn, sd] =simplify(rn, rd); steps = [`Multiply numerators: ${an} × ${bn} = ${rn}`,`Multiply denominators: ${ad} × ${bd} = ${rd}`,`Result: ${rn}/${rd}`, (sn !== rn || sd !== rd) ?`Simplified: ${fracStr(sn, sd)}`:`Already in lowest terms`,`As a decimal: ${(sn / sd).toFixed(6).replace(/\.?0+$/,"") ||"0"}` ]; [rn, rd] = [sn, sd]; } elseif (operation ==="÷") {// Multiply by reciprocal of Bconst flipN = bd, flipD = bn;if (bn ===0) { steps = ["Cannot divide by zero — set Fraction B numerator to at least 1."]; rn =NaN; rd =1; } else {const rawN = an * flipN;const rawD = ad * flipD;const [sn, sd] =simplify(rawN, rawD); steps = [`Flip Fraction B: ${bn}/${bd} becomes ${flipN}/${flipD}`,`Multiply: ${an}/${ad} × ${flipN}/${flipD}`,`Numerators: ${an} × ${flipN} = ${rawN}`,`Denominators: ${ad} × ${flipD} = ${rawD}`,`Result: ${rawN}/${rawD}`, (sn !== rawN || sd !== rawD) ?`Simplified: ${fracStr(sn, sd)}`:`Already in lowest terms`,`As a decimal: ${(sn / sd).toFixed(6).replace(/\.?0+$/,"") ||"0"}` ]; [rn, rd] = [sn, sd]; } } else {// Addition or subtraction — find common denominatorconst cd = ad * bd;// common denominator (cross-multiply)const aN = an * bd;const bN = bn * ad;const rawN = operation ==="+"? aN + bN : aN - bN;const [sn, sd] =simplify(rawN, cd); steps = [`Common denominator: ${ad} × ${bd} = ${cd}`,`Rewrite A: ${an}/${ad} = ${aN}/${cd}`,`Rewrite B: ${bn}/${bd} = ${bN}/${cd}`, operation ==="+"?`Add numerators: ${aN} + ${bN} = ${rawN}`:`Subtract numerators: ${aN} − ${bN} = ${rawN}`,`Result: ${rawN}/${cd}`, (sn !== rawN || sd !== cd) ?`Simplified: ${fracStr(sn, sd)}`:`Already in lowest terms`,`As a decimal: ${isFinite(sn / sd) ? (sn / sd).toFixed(6).replace(/\.?0+$/,"") ||"0":"undefined"}` ]; [rn, rd] = [sn, sd]; }// ── Build SVG output ─────────────────────────────────────────const W =560, lineH =24, topPad =14, sidePad =20;const H = topPad + steps.length* lineH +60+20;const svg = d3.create("svg").attr("viewBox",`0 0 ${W}${H}`).attr("width","100%").attr("style","max-width:560px; display:block; margin:0 auto; font-family:sans-serif; background:#f8fafc; border-radius:6px;");// Header: A op B =const headerText =`${an}/${ad}${operation}${bn}/${bd}`; svg.append("text").attr("x", W /2).attr("y", topPad +16).attr("text-anchor","middle").attr("font-size",16).attr("font-weight","bold").attr("fill","#1e3a5f").text(headerText);// Step-by-step lines steps.filter(Boolean).forEach((s, i) => {const isLast = i === steps.filter(Boolean).length-1; svg.append("text").attr("x", sidePad).attr("y", topPad +40+ i * lineH).attr("font-size",13).attr("fill", isLast ?"#166534":"#374151").attr("font-weight", isLast ?"bold":"normal").text(`${i +1}. ${s}`); });// Result box (only when result is valid)if (isFinite(rn / rd)) {const boxY = topPad +40+ steps.filter(Boolean).length* lineH +4; svg.append("rect").attr("x", sidePad -6).attr("y", boxY -18).attr("width", W -2* sidePad +12).attr("height",36).attr("fill","#dbeafe").attr("rx",4).attr("stroke","#93c5fd");// Area model for + and −: two coloured bars side by side in proportionif (operation ==="+"|| operation ==="−") {// Show A and B as proportional bars, stacked / subtractedconst barW = W -2* sidePad -150;const barH =18;const barX = sidePad +145;const barY = boxY -16;// A barconst aFrac =Math.min(an / ad,1);const bFrac =Math.min(bn / bd,1); svg.append("rect").attr("x", barX).attr("y", barY).attr("width", aFrac * barW).attr("height", barH).attr("fill","#2563eb").attr("opacity",0.8).attr("rx",2);if (operation ==="+") { svg.append("rect").attr("x", barX + aFrac * barW).attr("y", barY).attr("width", bFrac * barW).attr("height", barH).attr("fill","#16a34a").attr("opacity",0.8).attr("rx",2); } else {// Subtraction: show B removed from Aconst removeW =Math.min(bFrac, aFrac) * barW; svg.append("rect").attr("x", barX + aFrac * barW - removeW).attr("y", barY).attr("width", removeW).attr("height", barH).attr("fill","#dc2626").attr("opacity",0.5).attr("rx",2).attr("stroke","#dc2626").attr("stroke-dasharray","3,2"); } svg.append("rect").attr("x", barX).attr("y", barY).attr("width", barW).attr("height", barH).attr("fill","none").attr("stroke","#94a3b8").attr("rx",2); svg.append("text").attr("x", barX -4).attr("y", barY +13).attr("text-anchor","end").attr("font-size",10).attr("fill","#64748b").text("0"); svg.append("text").attr("x", barX + barW +4).attr("y", barY +13).attr("text-anchor","start").attr("font-size",10).attr("fill","#64748b").text("1"); } }return svg.node();}
9.3 Worked examples
Example 1 — Halving a recipe. A recipe needs \(\frac{3}{4}\) cup of flour, \(1\frac{1}{2}\) cups of oats, and \(\frac{5}{8}\) cup of sugar. You want to make half the recipe. What quantities do you need?
Multiply each ingredient by \(\frac{1}{2}\).
Convert the mixed number first: \(1\frac{1}{2} = \frac{3}{2}\).
\[\frac{3}{4} \times \frac{1}{2} = \frac{3}{8} \text{ cup flour}\]
\[\frac{3}{2} \times \frac{1}{2} = \frac{3}{4} \text{ cup oats}\]
\[\frac{5}{8} \times \frac{1}{2} = \frac{5}{16} \text{ cup sugar}\]
Example 2 — Splitting costs. Three friends split the cost of a camping trip. They agree to share costs in proportion to how many nights each stays: one friend stays \(\frac{1}{3}\) of the nights, another \(\frac{5}{12}\), and the third \(\frac{1}{4}\). The total cost is £120. What does each pay?
Check the fractions sum to 1 first — to make sure everyone’s share is accounted for: \[\frac{4}{12} + \frac{5}{12} + \frac{3}{12} = \frac{12}{12} = 1 \checkmark\]
Friend A: \(\frac{1}{3} \times 120 = £40\)
Friend B: \(\frac{5}{12} \times 120 = £50\)
Friend C: \(\frac{1}{4} \times 120 = £30\)
Total: £120. Check.
Example 3 — Running distances. You run 2.5 km on Monday, 1.75 km on Wednesday, and \(\frac{7}{4}\) km on Friday. What is your total distance for the week?
Convert \(\frac{7}{4}\) to a decimal so all three are in the same form: \(\frac{7}{4} = 1.75\) km.
\[2.5 + 1.75 + 1.75 = 6.0 \text{ km}\]
Example 4 — What fraction is left? A bag of rice is 0.38 used up. What fraction remains? Express it as a decimal and as a fraction in lowest terms.
Remaining: \(1 - 0.38 = 0.62\).
As a fraction: \(0.62 = \frac{62}{100} = \frac{31}{50}\).
\(\frac{31}{50}\) of the bag is left.
9.4 Where this goes
Fraction arithmetic is the foundation of algebra. When you solve \(\frac{2x}{3} = 8\), you multiply both sides by \(\frac{3}{2}\) — a fraction operation. Every algebraic fraction, rational expression, and limit in calculus is built on the rules in this chapter.
In calculus, the derivative is defined as a limit of a fraction: \(\frac{\Delta y}{\Delta x}\) as \(\Delta x \to 0\). That fraction needs to be understood, not just computed. The conceptual step from “fraction” to “rate of change” is not large; it requires only that you see the notation clearly.
Where this shows up
Any time you split something equally — a bill, a recipe, a distance — you’re doing fraction arithmetic.
A structural engineer applies a safety factor of \(\frac{3}{2}\) (or 1.5) to every load — multiplying by a fraction.
A financial model apportions costs, equity, and interest using decimal fractions at every step.
A GIS analyst computing land-cover proportions is adding fractions that must sum to 1.
The arithmetic is identical. The precision matters.
9.5 Exercises
A metal bar is \(4\frac{3}{8}\) m long. A \(1\frac{5}{8}\) m section is cut off. How much remains?
A recipe calls for \(\frac{2}{3}\) cup of milk. You want to make \(2\frac{1}{2}\) times the recipe. How much milk do you need?
A sports pitch is 0.75 km long and 0.48 km wide. What is its area in km²? Express the answer as a decimal and as a fraction in lowest terms.
Three taps fill a tank. Each supplies \(\frac{3}{8}\) of the tank’s capacity per hour. A drain removes \(\frac{5}{8}\) of the tank’s capacity per hour. Is the tank filling or emptying? At what net fraction per hour?
A bag of trail mix is analysed: 0.44 nuts, 0.29 dried fruit, 0.18 chocolate chips, and the rest is seeds. What fraction is seeds? Express as a decimal and a simplified fraction.
You have a 500 mL bottle of juice concentrate. The instructions say to mix it at \(\frac{1}{4}\) strength. What fraction of the final drink will be concentrate? How many mL of concentrate goes into a 250 mL glass?
Convert each to a decimal, then order from least to greatest: \(\frac{7}{12}\), \(\frac{3}{5}\), \(0.58\), \(\frac{11}{20}\), \(0.\overline{6}\).