Frage

Ich bin ein paar wirklich einfache mathematisch tun und das Ergebnis in einer MS SQL2008 DB zu speichern.

Ich bin im Durchschnitt aus der einigen Zahlen, die Byte-Werte liegen zwischen 1 <-> 5. Ich wünschte nur, wahrscheinlich 2 Dezimalstellen aufzuzeichnen. Ich interessiere mich nicht für die 2. Dezimalstelle über Rundung (z. B. einen 1.155 == 1.5 oder 1.6 .. Ich bin nicht zu Phased).

So .. Soll ich das durchschnittliche Ergebnis als Schwimmer, dezimal oder verdoppeln?

Wenn ich überprüfen, was LINQ zurückgibt, kann es alle drei Werte zurück!

Schließlich, was würde der entsprechende SQL-Datentyp Feld, auch sein.

Prost!

War es hilfreich?

Lösung

Was Sie brauchen, ist der DECIMAL Datentyp:

declare @val decimal(10,2)
select @val = 10.155
select @val

Wenn Sie Eingabewerte können Sie entweder auf die in Rundung gebaut verlassen oder explizit entscheiden, welche Rundung Sie wollen:

select val = round(10.155, 2, 0) -- rounded
select val = round(10.155, 2, 1) -- truncated

Dezimal (10,2) bedeutet, dass zehn Ziffern verwendet werden können, und dass zwei von ihnen sind als nach dem Komma genommen werden. das heißt, die höchste Zahl, dass DECIMAL (4,2) enthalten kann, ist 99,99. auf 100 führt in arithmetischer Überlauf einstellen wollen.

Andere Tipps

Ich würde wählen Doppel Float über und wahrscheinlich Dezimal Floaten über :. Id gehen für Floatalthough alle sollten das gleiche Ergebnis.

Haben Sie einen Blick auf diese beiden Seiten für Floats & Decimals

Dezimal wird hauptsächlich für die Währung verwenden. Während es funktionieren würde, finden Menschen könnte es verwirrend. In diesem Fall denke ich, Schwimmer wäre eine bessere Wahl sein.

Dezimal - es ist die einfachste, aber jeder von mentined wird die Arbeit

Wenn Sie die Ergebnisse wollen speichern so wenig Platz wie möglich verwenden Sie wahrscheinlich so etwas tun könnte (Pseudo-Code):

integer = ( sum(all_values) / all_values.count().float ) * 100;

Dies gibt Ihnen den Wert 352 für einen Durchschnitt von 3,52, so können Sie es als eine ganze Zahl speichern (Byte groß genug sein würde, glaube ich), und teilen Sie es nur um 100, wenn Sie es angezeigt werden soll.

Auf der anderen Seite, wenn Sie kümmern sich nicht um die Speicherung des Mittelwertes, mit Float-Werten ist vielleicht schneller. (Testen Sie beide zu sehen, was auf Ihrem System tatsächlich schnellsten ist.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top