import { useState } from 'react'; export default function Calculator() { const [display, setDisplay] = useState('0'); const [prevValue, setPrevValue] = useState(null); const [operation, setOperation] = useState(null); const [newNumber, setNewNumber] = useState(true); const handleNumber = (num) => { if (newNumber) { setDisplay(String(num)); setNewNumber(false); } else { setDisplay(display === '0' ? String(num) : display + num); } }; const handleDecimal = () => { if (newNumber) { setDisplay('0.'); setNewNumber(false); } else if (!display.includes('.')) { setDisplay(display + '.'); } }; const handleOperation = (op) => { const current = parseFloat(display); if (prevValue === null) { setPrevValue(current); } else if (operation) { const result = calculate(prevValue, current, operation); setDisplay(String(result)); setPrevValue(result); } setOperation(op); setNewNumber(true); }; const calculate = (a, b, op) => { switch (op) { case '+': return a + b; case '-': return a - b; case '×': return a * b; case '÷': return b !== 0 ? a / b : 0; default: return b; } }; const handleEquals = () => { if (operation && prevValue !== null) { const current = parseFloat(display); const result = calculate(prevValue, current, operation); setDisplay(String(result)); setPrevValue(null); setOperation(null); setNewNumber(true); } }; const handleClear = () => { setDisplay('0'); setPrevValue(null); setOperation(null); setNewNumber(true); }; const handleBackspace = () => { if (display.length > 1) { setDisplay(display.slice(0, -1)); } else { setDisplay('0'); setNewNumber(true); } }; return (
{prevValue !== null && operation ? `${prevValue} ${operation}` : ''}
{display}
{[7, 8, 9].map(num => ( ))} {[4, 5, 6].map(num => ( ))} {[1, 2, 3].map(num => ( ))}
); }