0.이하 처리

This commit is contained in:
ysCha 2025-12-22 17:31:45 +09:00
parent ab44be17fd
commit 6fdb0df00c

View File

@ -50,26 +50,42 @@ export const CalculatorInput = forwardRef(
// 2 // 2
const shouldPreventInput = (value) => { const shouldPreventInput = (value) => {
const decimalParts = (value || '').split('.') if (!value) return false
const decimalParts = value.toString().split('.')
return decimalParts.length > 1 && decimalParts[1].length >= 2 return decimalParts.length > 1 && decimalParts[1].length >= 2
} }
//
const appendNumber = (current, num) => {
// 0 0
if (current === '0' && num !== '.' && !current.includes('.')) {
return num.toString()
}
// 0. 0
if (current === '0' && num === '0') {
return '0.'
}
return current + num
}
if (hasOperation) { if (hasOperation) {
// //
if (calculator.currentOperand === '0' || calculator.shouldResetDisplay) { if (calculator.shouldResetDisplay) {
calculator.currentOperand = num.toString() calculator.currentOperand = num.toString()
calculator.shouldResetDisplay = false calculator.shouldResetDisplay = false
}else if (!shouldPreventInput(calculator.currentOperand)) { // 2 } else if (num === '.') {
calculator.currentOperand = (calculator.currentOperand || '') + num if (!calculator.currentOperand.includes('.')) {
calculator.currentOperand = calculator.currentOperand || '0' + '.'
}
} else if (!shouldPreventInput(calculator.currentOperand)) {
calculator.currentOperand = appendNumber(calculator.currentOperand || '0', num)
} }
// else {
// calculator.currentOperand = (calculator.currentOperand || '') + num
// }
newDisplayValue = calculator.previousOperand + calculator.operation + calculator.currentOperand newDisplayValue = calculator.previousOperand + calculator.operation + calculator.currentOperand
setDisplayValue(newDisplayValue) setDisplayValue(newDisplayValue)
} else { } else {
// //
if (displayValue === '0' || calculator.shouldResetDisplay) { if (calculator.shouldResetDisplay) {
calculator.currentOperand = num.toString() calculator.currentOperand = num.toString()
calculator.shouldResetDisplay = false calculator.shouldResetDisplay = false
newDisplayValue = calculator.currentOperand newDisplayValue = calculator.currentOperand
@ -77,8 +93,17 @@ export const CalculatorInput = forwardRef(
if (!hasOperation) { if (!hasOperation) {
onChange(calculator.currentOperand) onChange(calculator.currentOperand)
} }
} else if (!shouldPreventInput(calculator.currentOperand)) { // 2 } else if (num === '.') {
calculator.currentOperand = (calculator.currentOperand || '') + num if (!calculator.currentOperand.includes('.')) {
calculator.currentOperand = (calculator.currentOperand || '0') + '.'
newDisplayValue = calculator.currentOperand
setDisplayValue(newDisplayValue)
if (!hasOperation) {
onChange(newDisplayValue)
}
}
} else if (!shouldPreventInput(calculator.currentOperand)) {
calculator.currentOperand = appendNumber(calculator.currentOperand || '0', num)
newDisplayValue = calculator.currentOperand newDisplayValue = calculator.currentOperand
setDisplayValue(newDisplayValue) setDisplayValue(newDisplayValue)
if (!hasOperation) { if (!hasOperation) {