Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| faq:faq7:index [2026/02/06 03:33] – created - external edit 127.0.0.1 | faq:faq7:index [2026/02/20 15:34] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== CUBLOC 실수연산 결과가 | + | ====== CUBLOC 실수 연산 결과가 |
| - | 큐블록에서는 | + | 큐블록은 8비트 MCU 기반 제품입니다. |
| + | 이 구조에서는 | ||
| - | 모아콘은 32비트 ARM프로세서를 사용하기 때문에, 64비트 배정도 실수연산이 | + | ===== 왜 오차가 발생하나요? |
| - | 따라서 고정밀도를 | + | 컴퓨터에서 소수는 2진수로 변환되어 계산됩니다. |
| + | 이 과정에서 일부 숫자는 정확히 표현되지 못하고 근사값으로 저장됩니다. | ||
| + | |||
| + | 예를 들어, | ||
| + | |||
| + | 0.1 + 0.2 | ||
| + | |||
| + | 를 계산했을 때 | ||
| + | 결과가 0.3000000 이 아니라 0.2999999 처럼 보일 수 있습니다. | ||
| + | |||
| + | 이는 제품 불량이 아니라, | ||
| + | 32비트 실수 연산 방식의 구조적인 특성입니다. | ||
| + | |||
| + | ===== 32비트와 64비트의 차이 ===== | ||
| + | |||
| + | * CUBLOC → 32비트 단정도(float) | ||
| + | * MOACON → 64비트 배정도(double) | ||
| + | |||
| + | 32비트는 약 7자리 정도의 | ||
| + | 64비트는 약 15자리까지 정밀하게 표현할 수 있습니다. | ||
| + | |||
| + | 따라서 다음과 같은 경우에는 오차가 더 크게 느껴질 | ||
| + | |||
| + | - 아주 작은 소수 단위까지 계산해야 하는 경우 | ||
| + | - 누적 계산을 | ||
| + | - PID, 보정계수, | ||
| + | |||
| + | ===== 어떻게 대응해야 하나요? ===== | ||
| + | |||
| + | 1) 가능하면 정수 연산으로 처리하세요. | ||
| + | 예: 12.34 대신 1234로 계산 후 마지막에 /100 | ||
| + | |||
| + | 2) 비교 연산 | ||
| + | 예: If A > 0.299 And A < 0.301 Then | ||
| + | |||
| + | 3) 고정밀 연산이 반드시 필요한 경우에는 | ||
| + | | ||
| + | |||
| + | MOACON은 64비트 배정도 실수 연산을 지원하므로 | ||
| + | 정밀도가 크게 향상됩니다. | ||
| + | |||
| + | ===== 정리 ===== | ||
| + | |||
| + | * CUBLOC의 오차는 제품 이상이 | ||
| + | * 8비트 MCU의 구조적 특성입니다. | ||
| + | * 일반 제어용으로는 충분한 정밀도입니다. | ||
| + | * 고정밀 계산이 필요하면 MOACON을 선택하십시오. | ||
| [[faq: | [[faq: | ||
