누구나 내가 왜 다음 결과를 얻고 있는지 설명 할 수 있습니까?System.Decimal 라운드 지정
Dim badDecimal As Decimal = 54.50327999999999
Dim expectedDecimal As Decimal = CDec("54.50327999999999")
badDecimal = 54.50328D, expectedDecimal = 54.50327999999999D있다. 나의 이해는 badDecimal이 expectedDecimal 값을 포함해야한다는 것이다 (expectedDecimal이 올바른 값을 담을 수 있다는 사실은 Decimal 타입이 값을 유지하는 정밀도를 가짐을 의미한다).
미리 도움을 주셔서 감사합니다.
나는 모든 그렇게 많은 VB.NET 모르겠지만, C#에서 당신은 것을 나타 내기 위해 M 문자와 숫자 접미사 필요 십진수이며, 그렇지 않으면 double입니다. 그래서 VB에서 같은 작업을 수행해야합니까? 사실, 첫 번째 라인은 이중 값 (54.50327999999999의 두 번째 해석)을 소수점으로 할당하므로 컴파일 시간에 이미 정밀도가 손실 되었습니까? –
당신은 아름다운 사람이었습니다. 그것은 정말로 문제였습니다! 나는 var를 Decimal 타입으로 선언 했으므로 컴파일러에서 추측 할 것이라고 생각했습니다. 그 대답을 다시 게시하여 솔로 션으로 표시 할 수 있습니까? – WiseGuyEh
답글로 Reposted comment : http://stackoverflow.com/questions/2606610/system-decimal-rounds-on-assignment/2606685#2606685 –