A float típus létezik SQL-ben is és C#-ban is, de nagyon különböző a jelentésük. Az SQL float kb. 15 tizedesjegy pontosságú, a c# float csak kb. 7, és ez sok művelethez nem elég. A float típusú sql mezőknek c#-ban a double felel meg.
Ne használjatok C# float típust mappingben se és változótípusnak se, mert nem elég pontos!
- Real <http://msdn.microsoft.com/en-us/library/ms173773.aspx> , 4 byte, 7 értékes jegy, max kitevő: 38 (ne használjátok, nem elég pontos)
- Float <http://msdn.microsoft.com/en-us/library/ms173773.aspx> , 8 byte, 15 értékes jegy, max kitevő: 308 (legtöbb művelethez elég jó)
- Decimal(p, s) <http://msdn.microsoft.com/en-us/library/ms187746.aspx> , változó méretű, fix számú egész és tizedes jeggyel
Vigyázzatok a decimal típus használatakor, mert mindig fix számú tizedes jegyet kezel, ha nincs megadva (s), akkor nullának veszi és egészre kerekíti a tárolt értékeket. Legtöbbször decimal(18,3) formában szoktuk használni az ubm adatbázisban (jelentése: 15 jegyű egészrész, háromszámjegyű törtrész).
- float <http://msdn.microsoft.com/en-us/library/b1e65aza.aspx> , 4 byte, 7 értékes jegy, max kitevő: 38 (ne használjátok, nem elég pontos)
- double <http://msdn.microsoft.com/en-us/library/678hzkk9.aspx> , 8 byte, 15 értékes jegy, max kitevő: 308
- decimal <http://msdn.microsoft.com/en-us/library/364x0z75.aspx> , 16 byte, 28 értékes jegy, max kitevő: 28
Mivel üzleti alkalmazásokban legtöbbször az értékes jegyek száma a szűk keresztmetszet és nem a kitevő mérete, ezért a decimal típust szokás preferálni, azonban bonyolítja a helyzetet, hogy nincs egyértelmű megfelelője SQL-ben.
A double c# típusnak szinte egyértelműen megfelel a float sql típus, ez szinte minden feladathoz elég.