는 이해 float and real are 그 : 숫자 데이터 부동 소수점에 사용실제 및 부동 소수점 수의 소수점 길이와 정확성
대략 번호 데이터 형식. 부동 소수점 데이터는 근사값입니다. 따라서 의 모든 값이 데이터 유형 범위를 정확하게 나타낼 수있는 것은 아닙니다.
그러나, 다음 예 :
Q1 : '플로트 (24)' 이유 (즉, 실시간)의 더 소수 보다 제공 '플로트 (53) ' 아직 정확도가 낮습니까?
Q2 : 그것은 반올림하지 않고 그대로가 어떻게 숫자 필드에 @s를 저장합니까?
declare @s varchar(50) = '34.770438199999944'
select convert(float(24), @s) real_, convert(float(53), @s) float_
| real_ | float_ |
------------------------------------
| 34.77043(9147949) | 34.77043(82) |
숫자를 저장할 데이터가 적기 때문에 덜 정밀도가 낮습니까? 부유물인가 진짜인가? – Kaf
음 .. 모든 숫자는 부동 소수점이거나 여러 비트로 표현됩니다. 예를 들어, 1 바이트 = 8 비트. 0에서 255 사이의 숫자를 유지할 수 있습니다 (2^8 숫자). 2 바이트 숫자로 가면 2^16이됩니다. 부동 소수점을 사용하면 추론은 비슷하지만 숫자는 그대로 저장되지 않고 사실 숫자 인 2 자리와 지수로 저장됩니다. 이 2를 사용하면 아주 큰 범위의 수를 근사 할 수 있습니다. 이제 float 및 real은 다른 바이트 수로 표현됩니다. 2 개의 숫자를 저장하는 바이트가 더 많은 플로트는 데이터를 훨씬 정확하게 저장할 수 있습니다. –