Oracles documentation에 충돌하는 참조가 표시됩니다. 10 진수가 FLOAT에 저장되는 방식과 NUMBER 유형이 데이터베이스에 저장되는 방식간에 차이가 있습니까?오라클 수레 대 숫자
C에서 비롯된 것처럼 float에는 int에없는 정확도 제한이 있습니다. 예를 들어 'float'의 경우 0.1 (Base 10)은 대략 0.100000001490116119384765625 (Base 10)와 같은 대략 0.110011001100110011001101 (Base 2)로 근사됩니다. 그러나 int의 경우 5 (Base 10)는 정확히 101 (Base 2)입니다.
float i;
i = 0;
for (i=0; i != 10;)
{
i += 0.1
}
을 내가 숫자로 정의 된 플로트 elsewhere in Oracle's documentation를 참조하지만 : C에서 예상대로 다음 종료되지 않습니다 왜
. 그리고 제가 이해 하듯이, 오라클의 NUMBER 유형 구현은 C 플로트와 동일한 문제를 일으키지 않습니다.
그럼 실제 이야기는 무엇입니까? 오라클은 float/FLOATs에서 발생할 것으로 예상되는 표준에서 벗어 났습니까?
(나는 그들을 사용하고있는 것에 대해 차이점이있을 것이라고 확신하지만, 0.1 * 10이 1.00000000000000001로 나오면 질문 할 것입니다.)