있습니다. 이 같은 입력 데이터가있는 경우는 :같은 구조체 내가 코드가 서로 다른 해시 코드
-0,25
0
1
-450335288
---------------
-0,25
0
1
-450335288
---------------
-0,25
0
1
-450335288
---------------
하지만 인수를 변경하는 경우 :
prg.MaxPoints(new Point[] { new Point(4, -1), new Point(4, 0), new Point(4, 5) });
디버그 출력된다. 주문 :
prg.MaxPoints(new Point[] { new Point(4, 0),new Point(4, -1) , new Point(4, 5) });
디버그 밖으로 :
-0,25
0
1
1697148360
---------------
-0,25
0
1
-450335288
---------------
-0,25
0
1
-450335288
---------------
그리고 중요 할 수 한 가지가 첫 번째 경우에 우리는 (GetFromPoints 방법) 긍정적 모든 "디바이더"을 가지고입니다 (4 , 24,20) 두 번째 경우에는 그 중 하나가 음수이고 다른 두 개가 양수이면 (-4,20,24)입니다. 아무도 이것에 대해 설명 할 수 있습니까?
UPD. i는 음으로 나누어 0 0이 아니라는 것을 의미한다
return new Coefficients(a/divider, 0, c/divider);//anyway in all of these cases 2-nd argument is 0
에
return new Coefficients(a/divider, b/divider, c/divider);
변경된 경우?
네,하지만 같은 필드가있는 구조체가 서로간에 같아야한다고 생각했지만 그렇지 않습니다. 'Debug.WriteLine (coef_list [0] .a.Equals (coef_list [1] .a)); Debug.WriteLine (coef_list [0] .b.Equals (coef_list [1] .b)); Debug.WriteLine (coef_list [0] .c.Equals (coef_list [1] .c)); 의 Debug.WriteLine (coef_list [0] .Equals (coef_list [1]));' 표시 '사실 그들은 동일하지 FALSE ' –
가, 수학이 당신에게 반올림 오류를 제공 사실 사실, 그래서'- 0,25'는 그렇지 않습니다. a, b, c 값을 출력 할 때'.ToString ("G17")' –
바이트를 엿보는 것은 어쩌면 언더 플로우가있는 것 같아요. 바이트이지만 개념적으로 동일한 값을 제공합니다. 첫 번째 경우, 첫 번째 구성 요소는 정확하게 '0 0000000000000000' 인'b '를 가지며 두 번째 경우에는'0 0000000000000080'과 약간 다릅니다. –