Frage : sonderbare Effekte using RUNDES () auf REALs in TSQL

Ich versuche, einige Spalten oben zu addieren, die reals sind, und runde das Resultat 2x zu den dezimalen places.

My Spalten bin REALS, und ich bin gewesen, die Wanze using vars der Art REAL.

Consider zu reproduzieren dieser Code, unterhalb dessen wir erwarten, 710.40

This Rückkehr zurückzubringen:
710.39999999999998

yet, wenn wir den Anruf zum RUNDEN ()
it entfernen, geht zurück:
710.40002

What geschieht hier?
And, wie ich eine genaue Rundung (zu den Dezimalstellen 2x) dieser REALS erhalten kann?

I morgens using Dank des SQL-Servers 2000.

Many!
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
DECLARE @r1 REAL, @r2 REAL, @r3 REAL, @r4 REAL, @r5 REAL, @r6 REAL, @r7 REAL, @r8 REAL, @r9 REAL, @r10 REAL, @r11 REAL
EINSTELLEN @r1 = 0.0
EINSTELLEN @r2 = 0.0
EINSTELLEN @r3 = 0.0
EINSTELLEN @r4 = 0.0
EINSTELLEN @r5 = 0.0
EINSTELLEN @r6 = 0.0
EINSTELLEN @r7 = 710.40002
EINSTELLEN @r8 = 0.0
EINSTELLEN @r9 = 0.0
EINSTELLEN @r10 = 0.0
EINSTELLEN @r11 = 0.0
UM VORWÄHLEN ((@R1 + @R2 + @R3 + @R4 + @R5 + @R6 + @R7 + @R8 + @R9 + @R10 + @R11), 2)

Antwort : sonderbare Effekte using RUNDES () auf REALs in TSQL

Aber, da ralmada unterstrichen hat, verwenden Sie ein ungefähres numerisches, das nicht zu diesem Zweck bestimmt ist, also haben Sie ein paar Wahlen:
1. Ihren Code ändern, um passende Datenarten wie numerisches zu benutzen (10, 5) gleich bleibenden Ausgang erhalten.
2. Den Code lassen wie ist, und mit ihm leben oder bis 2005/2008 verbessern und hoffen, dass Sie nicht Spitze wieder erhalten.

Ihr Gift auswählen.
Weitere Lösungen  
 
programming4us programming4us