sql >> Databáze >  >> RDS >> Mysql

proč dotaz sum() vrací výsledek s více desetinnými čárkami?

float datový typ nepředstavuje čísla s desetinnými číslicemi. Představuje binární čísla, takže binární číslice v číslech představují mocniny dvou, například 16, 8, 4, 2, 1, ½, ¼, ⅛ a tak dále.

Čísla uvedená jako „272,7“, „0,55“ atd. nejsou přesným vyjádřením uložených hodnot. Například číslo zobrazené jako „272,7“ může být ve skutečnosti 272,70001220703125.

Pravidla používaná k formátování čísel pro výstup vám mohou tyto rozdíly skrýt tím, že použijí méně než všech číslic potřebných k zobrazení přesné hodnoty.

Když tato čísla sečtete, rozdíly mezi skutečnými čísly a blízkými desetinnými reprezentacemi se mohou zvětšit nebo zmenšit v závislosti na náhodných variacích mezi rozdíly. Součet, který vidíte, je přirozeným výsledkem těchto sčítání.




  1. Jaký je maximální počet znaků, které nvarchar(MAX) pojme?

  2. Database Connection se neuvolní po vypršení nečinnosti v glassfish

  3. Vztah více identických entit

  4. SQLException:Řetězec nebo binární data by byla zkrácena