Float ve .NET a SQLite

.NET

Zarucuje se presnost do 7 desetinnych mist. Kde se da desetinna carka je uplne jedno. Vsechny ostatni cisla nad 7 cifer se zmeni na nuly a v debuggeru se projevuje v e notaci (vyparsovany “10999991” ve float je 1.099999E+07 a prevedeny opet na string “10999990”). Nejvetsi cislo ktere lze ulozit do float je 340282299999999936848264992248096128000 – muzete vlozit i vyssi ale snizi se na tohle. Nicmene float.MaxValue obsahuje cislo o mnohem vyssi:

340,282,346,999,999,936,944,928,768,456,368,192,088 – float.MaxValue
340,282,299,999,999,936,848,264,992,248,096,128,000 – jakekoliv cislo s 40ti a vice ciframa

SQLite

Pokud vlozite do SQLite sloupce REAL hodnotu 1.2, SQLite vam zpatky vrati 1,20000004768372. Je jedno jestli je Real ve skutecnosti double nebo float, to aby vam(mi) vracelo cislo zakoncene cisly, ktere si nekde vycucali z prstu. Chtel jsem dat SQLite sanci pote co jsem ji vsude nahradil SQL Serverem ale vidim ze sance se zel konat nebude.

Leave a Reply