/ / Come può SQLServer rappresentare 0,2 come FLOAT - sql-server, floating-point, computer science, floating-accuracy

Come può SQLServer rappresentare 0,2 come FLOAT - sql-server, floating-point, computer science, floating-accuracy

DECLARE @f as float

SELECT @f = 0.2

SELECT @f

Il codice sopra riportato restituisce

----------------------
0.2

(1 row(s) affected)

Nessuna sorpresa lì. Tranne che il punto in virgola mobile non può rappresentare 0.2 Esattamente.

Quindi cosa sta facendo SQLServer qui? Sta usando il floating-point con una base di 10? Ero d'accordo sul fatto che si occupava sempre di virgola mobile nella base 2 (come in pratica sarebbe il punto di virgola mobile con base 10) DECIMAL?).

Sta facendo qualche arrotondamento?

risposte:

1 per risposta № 1

float è preciso a 15 cifre significative così 0.2 di solito uscirà come 0.2

Le tecniche menzionate nel tuo link mitigano (ma potrebbero non eliminare) la perdita di precisione per valori come questo con poche cifre

Ma con numeri più grandi, la precisione è persa

DECLARE @f as float

SELECT @f = 0.1234567890123456E0
SELECT @f

SELECT @f = 1.000000000000023E0
SELECT @f