Vraag : bizarre gevolgen die ROND () gebruiken voor REALs in TSQL

Ik probeer om een paar kolommen op te tellen die reals, zijn en het resultaat aan 2x decimale/>My kolommen places.


Consider deze code waaronder wij veronderstellen om winst 710.40

This terug te keren:
710.39999999999998

yet als wij de vraag aan RONDE ()
it verwijderen keert terug:
710.40002

What hier gebeurt?
And hoe kan ik krijgen het nauwkeurige rond maken (aan 2x decimalen) van deze REALS?

I am gebruikend SQL dank/>
Many van de Server 2000.
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
ECHTE DECLARE @R1, @R2 ECHT, @R3 ECHT, @R4 ECHT, @R5 ECHT, @R6 ECHT, @R7 ECHT, @R8 ECHT, @R9 ECHT, @R10 ECHT, @R11 ECHT REEKS @r1 = 0.0 REEKS @r2 = 0.0 REEKS @r3 = 0.0 REEKS @r4 = 0.0 REEKS @r5 = 0.0 REEKS @r6 = 0.0 REEKS @r7 = 710.40002 REEKS @r8 = 0.0 REEKS @r9 = 0.0 REEKS @r10 = 0.0 REEKS @r11 = 0.0 SELECTEER ROND ((@R1 + @R2 + @R3 + @R4 + @R5 + @R6 + @R7 + @R8 + @R9 + @R10 + @R11), 2)

Antwoord : bizarre gevolgen die ROND () gebruiken voor REALs in TSQL

Maar zoals ralmada heeft gewezen op gebruikt u benaderende numeriek die niet voorgenomen voor dat doel is, zodat hebt u een paar opties:
1. Verander uw code om aangewezen gegevenstypes zoals numeriek te gebruiken (10, 5) om verenigbare output te krijgen.
2. Verlaat de code zoals is, en levend met het of verbetering tot 2005/2008 en hoop u geen beetje opnieuw wordt.

Pluk uw vergift.
Andere oplossingen  
 
programming4us programming4us