무엇이 부동점수입니까?
3969 단어 computerscienceprogramming
부동점은 이진 형식으로 숫자를 저장하는 방법이다.그것은 우리로 하여금 대량의 음식을 저장하게 할 수 있다
고정된 공간량을 사용하여 값을 계산하다.
내가 왜 신경 써야 돼?
생각해 본 적 있습니까?
0.1
+0.3
은 항상 0.4
과 같지 않습니까?5분 이내:
너는 우리가 어떻게 2진법으로 숫자를 표시하는지 잘 알고 있을 것이다.
각 2를 대표하는 멱은 조합을 통해 우리는 모든 정수를 생성할 수 있다.
그러나 우리가 비정수적인 것을 표시해야 할 때, 예를 들어
2.5
은 어떤 일이 일어날까요?여덟 분을 둘로 나눕시다.
우리는 소수점 앞의 숫자를 표시하기 위해 '왼쪽' 부분을 사용할 것이다. (우리의 예는
2
)오른쪽 부분은 소수점 뒤의 점수(
0.5
, 본 예에서 0.5)를 나타낸다.이 시스템에서
2.5
은 0 0 1 0 1 0 0 0
으로 표시됩니다.우리는 지금 점수를 표시할 수 있지만, 우리는 많은 범위를 잃었다.
예를 들어 우리는 이런 격식으로
16.0
을 표시할 수 없다.주문한 왼쪽에 충분한 자리가 없다.우리는 계속해서 더 많은 숫자를 추가해서 더 큰 숫자를 저장할 수 있지만, 이러한 형식은 여전히 매우 제한되어 있다.
때때로 우리는 매우 큰 숫자를 저장하려고 하는데, 이런 상황에서 우리는 왼쪽에 더 많은 자리가 있기를 바란다.다른 때 우리는
예를 들어 아주 작은 점수를 저장하는 경우 왼쪽은 더 적은 위치, 오른쪽은 더 높은 정밀도를 필요로 한다.
이것이 바로 부동점 연산이다.더 큰 값을 표시하기 위해 점 이동을 허용하는 숫자를 저장하는 방법
값의 범위입니다.
부동 소수점 값의 표준은 "IEEE 754"라고 하는데 32비트와 64비트 부동 소수점(또는 "부동 소수점") 값을 정의한다.
각 32비트 또는 64비트 부동점은 세 부분으로 분할됩니다.
0
은 플러스, 1
은 마이너스 너는 이 공식을 이해할 필요가 없다. 단지 이런 저장 방식을 알기만 하면
숫자는 우리가 더 큰 범위를 대표할 수 있다는 것을 의미한다.
지수 값을 크게 하거나 작게 함으로써 우리는 매우 작은 점수나 매우 작은 점수를 나타낼 수 있다
대량이었어
이것이 바로 왜 그것을'부동점'이라고 부르는가이다. 그것은 우리의 최초의 예처럼 고정점이 없다.대신
지수의 크기에 따라 부동 또는 이동을 클릭합니다.
반올림 오차
몇몇 숫자는 우리가 표준적인 10진법으로 표시할 수 없다.
예를 들어 우리는 대표할 수 없다⅓ 10진수:
⅓ = 0.3333333...
일부 이진 숫자도 마찬가지다.그들은 정확하게 묘사될 수 없다.예를 들어
0.1
을 2진법으로 표시해 봅시다.마찬가지로 소수점 뒤의 값은 분수를 나타냅니다.
이것은
0.1
에 가깝다. 이것은 우리가 이 예에서 할 수 있는 가장 좋은 일이다. 그러나 그것이 완전히 0.1
은 아니다.우리의 점이 이동할 수 있다는 사실은 우리가 원한다면 이 점수의 정밀도를 높일 수 있다는 것을 의미한다.
그러나 사실은 우리가 2진법으로 숫자를 정확하게 표시할 수 없다는 것이다.
이것은 약간의 재미있는 반올림 오류를 초래할 수 있다.
JavaScript에서
0.2
+0.1
을 계산하려고 하면이것은 정답과 매우 가깝지만 완전히 정확하지는 않다.
이 점을 감안하여, 우리는 통상적으로 차액을 검사함으로써 부동점수를 비교한다
그들 사이.
예컨대
두 숫자가 같은지 확인하면, 우리는 그것들 사이의 차이가 매우 작은지 검사할 것이다.
Math.abs(result1 - result2) < 0.001
물론 이것은 간략한 예이다.실제로 현재 계산 중인 공차를 선택합니다.더 알고 싶으세요?
다음 링크를 보려면 다음과 같이 하십시오.
Reference
이 문제에 관하여(무엇이 부동점수입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/davejsaunders/what-are-floating-point-numbers-4oc3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)