Fraction Calculator - All-in-One

Fraction Calculator

Multiple fraction calculators capable of addition, subtraction, multiplication, division, simplification, and conversion between fractions and decimals. All results can be exported to PDF.

Fraction Calculator

Addition, subtraction, multiplication, and division of fractions. Fields above the line = numerator, below = denominator.

=
?
?

Mixed Numbers Calculator

Enter mixed numbers like "2 3/4" or simple fractions like "3/5".

= ?

Simplify Fractions Calculator

Enter a whole number (optional), numerator, and denominator to simplify.

= ?

Decimal to Fraction Calculator

= ?

Fraction to Decimal Calculator

= ?

Big Number Fraction Calculator

Use this calculator if the numerators or denominators are very big integers.

= ?

Mixed: ' + toMixed(r[0], r[1]) + ' | Decimal: ' + (r[0] / r[1]).toFixed(6) + '

'; stepsEl.innerHTML = html; showBtn('c1export'); } function clearFraction() { ['c1aN','c1aD','c1bN','c1bD'].forEach(function(id) { document.getElementById(id).value = ''; }); document.getElementById('c1resultDisplay').innerHTML = '?
?'; document.getElementById('c1steps').className = 'frac-hidden'; hideBtn('c1export'); state.c1 = null; } function exportFraction() { if (!state.c1) return; var s = state.c1; var opDisplay = s.op === '*' ? '\u00d7' : (s.op === '/' ? '\u00f7' : s.op); exportPdf('Fraction Calculator Result', [ ['Expression', s.aN + '/' + s.aD + ' ' + opDisplay + ' ' + s.bN + '/' + s.bD], ['Result (Fraction)', formatFrac(s.r[0], s.r[1])], ['Result (Mixed)', toMixed(s.r[0], s.r[1])], ['Result (Decimal)', (s.r[0] / s.r[1]).toFixed(6)] ], s.steps); } // 2. Mixed Numbers function calcMixed() { hide('c2error'); hide('c2result'); var a = parseMixed(val('c2a')), b = parseMixed(val('c2b')); if (!a || !b) { show('c2error', 'Enter valid mixed numbers (e.g. "2 3/4" or "3/5")'); document.getElementById('c2error').classList.remove('frac-hidden'); return; } var op = opVal('c2op'); var r = calcOp(a[0], a[1], b[0], b[1], op); var text = toMixed(r[0], r[1]) + ' = ' + formatFrac(r[0], r[1]) + ' = ' + (r[0] / r[1]).toFixed(6); var opDisplay = op === '*' ? '\u00d7' : (op === '/' ? '\u00f7' : op); state.c2 = { a: val('c2a'), b: val('c2b'), op: opDisplay, result: text }; show('c2result', text); showBtn('c2export'); } function clearMixed() { ['c2a','c2b'].forEach(function(id){document.getElementById(id).value='';}); hide('c2result'); hide('c2error'); hideBtn('c2export'); state.c2=null; } function exportMixed() { if (!state.c2) return; var s=state.c2; exportPdf('Mixed Numbers Calculator Result',[['Expression',s.a+' '+s.op+' '+s.b],['Result',s.result]]); } // 3. Simplify function calcSimplify() { var w = parseInt(val('c3w')) || 0, n = parseInt(val('c3n')) || 0, d = parseInt(val('c3d')) || 1; if (d === 0) return; var totalNum = w * d + (w < 0 ? -Math.abs(n) : n); var s = simplify(totalNum, d); var g = gcd(Math.abs(totalNum), Math.abs(d)); var text = formatFrac(s[0], s[1]) + ' (Mixed: ' + toMixed(s[0], s[1]) + ') GCD: ' + g; state.c3 = { input: (w||0) + ' ' + n + '/' + d, result: text }; show('c3result', text); showBtn('c3export'); } function clearSimplify() { ['c3w','c3n','c3d'].forEach(function(id){document.getElementById(id).value='';}); hide('c3result'); hideBtn('c3export'); state.c3=null; } function exportSimplify() { if(!state.c3)return; exportPdf('Simplify Fraction Result',[['Input',state.c3.input],['Simplified',state.c3.result]]); } // 4. Decimal to Fraction function calcDecToFrac() { var d = parseFloat(val('c4dec')); if (isNaN(d)) return; var f = decToFrac(d); var text = formatFrac(f[0], f[1]) + ' (Mixed: ' + toMixed(f[0], f[1]) + ')'; state.c4 = { decimal: val('c4dec'), result: text }; show('c4result', text); showBtn('c4export'); } function clearDecToFrac() { document.getElementById('c4dec').value=''; hide('c4result'); hideBtn('c4export'); state.c4=null; } function exportDecToFrac() { if(!state.c4)return; exportPdf('Decimal to Fraction Result',[['Decimal',state.c4.decimal],['Fraction',state.c4.result]]); } // 5. Fraction to Decimal function calcFracToDec() { var w = parseInt(val('c5w')) || 0, n = parseInt(val('c5n')) || 0, d = parseInt(val('c5d')) || 1; if (d === 0) return; var totalNum = w * d + (w < 0 ? -Math.abs(n) : n); var text = (totalNum / d).toString(); state.c5 = { input: (w||0) + ' ' + n + '/' + d, result: text }; show('c5result', text); showBtn('c5export'); } function clearFracToDec() { ['c5w','c5n','c5d'].forEach(function(id){document.getElementById(id).value='';}); hide('c5result'); hideBtn('c5export'); state.c5=null; } function exportFracToDec() { if(!state.c5)return; exportPdf('Fraction to Decimal Result',[['Fraction',state.c5.input],['Decimal',state.c5.result]]); } // 6. Big Number function calcBig() { var aN = parseInt(val('c6aN')) || 0, aD = parseInt(val('c6aD')) || 1; var bN = parseInt(val('c6bN')) || 0, bD = parseInt(val('c6bD')) || 1; if (aD === 0 || bD === 0) return; var op = opVal('c6op'); var r = calcOp(aN, aD, bN, bD, op); var opDisplay = op === '*' ? '\u00d7' : (op === '/' ? '\u00f7' : op); var text = formatFrac(r[0], r[1]) + ' (Mixed: ' + toMixed(r[0], r[1]) + ') Decimal: ' + (r[0] / r[1]).toFixed(10); state.c6 = { expr: aN + '/' + aD + ' ' + opDisplay + ' ' + bN + '/' + bD, result: text }; show('c6result', text); showBtn('c6export'); } function clearBig() { ['c6aN','c6aD','c6bN','c6bD'].forEach(function(id){document.getElementById(id).value='';}); hide('c6result'); hideBtn('c6export'); state.c6=null; } function exportBig() { if(!state.c6)return; exportPdf('Big Number Fraction Result',[['Expression',state.c6.expr],['Result',state.c6.result]]); }