Skip to content

[#10263] 음수 정수의 소수 부분(unnatural) 계산 버그 수정#3045

Open
prisml wants to merge 1 commit intodevelopfrom
issue/10263
Open

[#10263] 음수 정수의 소수 부분(unnatural) 계산 버그 수정#3045
prisml wants to merge 1 commit intodevelopfrom
issue/10263

Conversation

@prisml
Copy link
Contributor

@prisml prisml commented Feb 26, 2026

🐛 문제 상황 (Problem)

현상:

  • ( )의 소수 부분 블록에서 음수 정수(예: -1, -2)를 입력하면 소수 부분이 0이 아닌 1로 반환됨

원인:

case 'unnatural': {
    returnVal = new BigNumber(value).minus(Math.floor(value));
    returnVal = returnVal.toNumber();
    if (value < 0) {
        returnVal = 1 - returnVal;
    }
    break;
}
  • -1 입력 시: BigNumber(-1).minus(Math.floor(-1))-1 - (-1)0
  • value < 0 조건에 의해 1 - 01 이 반환됨 (정수인데 소수 부분이 1)

✅ 해결 방안 (Solution)

1. returnVal !== 0 조건 추가

  • 음수 보정 로직(1 - returnVal)이 returnVal이 0이 아닌 경우에만 실행되도록 조건 추가
  • if (value < 0)if (value < 0 && returnVal !== 0)

2. 기존 동작 유지

  • 음수 소수의 기존 동작은 그대로 유지됨
입력 수정 전 수정 후
-1 1 0
-2 1 0
-1.7 0.7 0.7 (변경 없음)
3.14 0.14 0.14 (변경 없음)
0 0 0 (변경 없음)

🎯 예상 영향 범위 (Impact)

  • block_calc.jscalc_operation 블록 중 unnatural(소수 부분) 연산에만 영향
  • 음수 정수 입력 시 결과만 변경, 그 외 모든 케이스는 기존과 동일
  • 사이드 이펙트 없음

📋 관련 이슈 (Related Issues)

  • #10263

- 음수 정수(-1, -2 등) 입력 시 소수 부분이 1로 반환되던 버그 수정 🐛
- returnVal이 0일 때 불필요한 '1 - 0' 연산 방지 조건 추가 ✅
- 기존 음수 소수(-1.7 → 0.7) 동작은 유지 🔧
@github-actions github-actions bot added the issue 내부 이슈 처리를 위한 PR label Feb 26, 2026
@prisml prisml self-assigned this Feb 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

issue 내부 이슈 처리를 위한 PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants