Fråga : kusligt verkställer using RUNDA () på REALs i TSQL

Pröva förmiddag I att tillfoga upp några kolonner, som är reals, och att runda resultatet till decimal- places.

My kolonner för 2x var REALS, och jag har varit kompetent att reproducera bugga using vars av typ REAL.

Consider som denna kodifierar nedanfört, som vi förväntar för att gå retur för 710.40

This:
710.39999999999998

yet, om vi tar bort appellen till
it för RUNDAN (), går tillbaka:
710.40002

What händer här?
And, hur kan jag få exakt runda (till decimal- 2x förlägger), av dessa REALS? förmiddag för

I using tack för SQL-server 2000.

Many!
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
" codeBody " " >DECLARE @r1, VERKLIG @r2, VERKLIG @r3, VERKLIG @r4, VERKLIG @r5, VERKLIG @r6, VERKLIG @r7, VERKLIG @r8, VERKLIG @r9, VERKLIG @r10, VERKLIG @r11 för class= " för
" klar "

Svar : kusligt verkställer using RUNDA () på REALs i TSQL

Men, som ralmadaen har pekat ut, du använder ett ungefärligt numeriskt som inte ämnas för det ämnar, så du har en koppla ihop av alternativ:
1. Ändra ditt kodifierar för att använda anslår datatyper liksom numeriskt (10, 5) för att få jämnt tillverkat.
2. Lämna kodifiera som är, och levande med den eller förbättring till 2005/2008 och hoppas dig får inte bet igen.

Välj ditt gift.
Andra lösningar  
 
programming4us programming4us