어제 왜 더블에 10 배의 0.10을 더하는 것이 int 1과 같지 않은지 질문했습니다. 왜 double 1.0이 int 1과 같은가요?
나는 훌륭한 대답을 얻었다. 개요는 다음과 같습니다.- 부동 소수점 유형과 정수 유형은 이진 표현이 서로 다르기 때문에 직접 비교할 수 없습니다.
- 도 1에 가까운 값이 될 수있는 부동 소수점 유형으로 0.1 열 번을 추가하는 결과가 아니라 정확히
나는 왜 지금 이유를 볼 수 있습니다. 그러나, 나는이 같은 경우 : 정말 1을 두 번 1.0 사이의 평등을 획득하고 int로이 경우
Dim d As Double
For i = 1 To 4
d = d + 0.25
Next
MsgBox(d) 'output 1
MsgBox(d = 1) 'True
MsgBox(1 - d) ' 0
Console.WriteLine(d) '1
을 나는 d는 어떻게 든 것으로 기대 있도록 이중 만 근사치가 1에 가까운 값이라고 다음 생각 최초의 첫 번째 질문에서와 마찬가지입니다. 서로 다른 데이터 유형 (이 경우 이중 정수)을 직접 비교하는 것이 좋은 이유는 무엇입니까? 그리고 이번에는 평등을 얻는 이유는 무엇입니까 ??
희미한 d를 double로, 희미한 i를 Int로 비교해보십시오. 이것은 틀린 것 같습니다. 프로그래머는 무엇이 할당되고 있는지를 알기 위해 더 깔끔한 코드 타입 캐스팅이 필요합니다. :) – doNotCheckMyBlog