문제

레거시 ASP 응용 프로그램을 작업 중입니다. 플로트 유형 인 SQL Server 2000의 필드에 값 (40.33)을 삽입하려고합니다. 응용 프로그램의 일부 로깅을 통해 볼 수있는 모든 장소는 저장된 절차에 40.33을 보내고 있습니다. 통화가 발생하는 동안 데이터베이스에 대해 SQL 프로파일 러를 실행하면 추적에서 볼 수있는 값은 4.033000183105469E+001입니다.

추가 쓰레기는 어디에서 나오는가 (183105469)?

왜 내가 40 또는 40.25를 통과 할 때 더 이상 아무것도 없습니까?

이것은 Float를 사용하는 이상한 부작용 중 하나입니까? 내가 무언가를 쓸 때 나는 보통 돈이나 소수점 또는 다른 것을 사용하므로 플로트 데이터 타입에 익숙하지 않습니다.

도움이 되었습니까?

해결책

예, 이것은 이상합니다 잘 알려진, 플로트 사용의 부작용.

Microsoft SQL Server에서는 다음과 같은 정확한 숫자 데이터 유형을 사용해야합니다. 숫자, 소수점, 돈이나 작은 돈 스케일로 정확한 숫자가 필요한 경우.

float를 사용하지 마십시오.

다른 팁

나는 이것이 아마도 정밀 문제 일 뿐이라고 생각한다.

문제는 플로트가 100% 정확하지 않다는 것입니다. 정확히 숫자가 필요하다면 (특히 금전적 값을 다룰 때) 소수점 유형을 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top