2010-12-23 4 views
4

Ich erhalte einen Fehler, wenn ich einen C# Double in einen SQL Server-Float-Parameter übergebe. Ich weiß, dass ich einen Wert sende, den der SQL Server-Float nicht darstellen kann, aber ich kann nicht herausfinden, welcher es ist. Also, meine Frage ist, welche Werte ein C# -Doppel darstellen kann, dass ein SQL Server-Float nicht kann?Welche spezifischen Werte kann ein C# -Doppel darstellen, dass ein SQL Server-Float nicht kann?

+0

Welchen Fehler bekommen Sie? – phoog

+0

"Der eingehende RPC-Protokolldatenstrom (TDS) für Remoteprozeduraufrufe ist falsch. Parameter 1 (" @fOne "): Der angegebene Wert ist keine gültige Instanz des Datentyps float. Überprüfen Sie die Quelldaten auf ungültige Werte Ein Beispiel für einen ungültigen Wert sind Daten des numerischen Typs mit einem Maßstab größer als die Genauigkeit. " Ich habe bereits überprüft, dass dies ein Ergebnis des Sendens eines Werts ist, der nicht durch den SQL Server-Float-Typ dargestellt werden kann. – GuyBehindtheGuy

+0

Sie repräsentieren das Gleiche. –

Antwort

3

IIRC die Werte NaN, Positive und Negative werden nicht von SQL Server unterstützt. Sie können dies mit den Methoden Double.IsNaN (...) und Double.IsInfinity (...) überprüfen.

Verwenden Sie nicht == für die Überprüfung, da diese speziellen Werte nie gleich einem anderen Wert sind, nicht selbst (z. B. NaN != NaN).

0

Ein Double und ein Float haben denselben Datentyp. Ich denke, dass Ihr Fehler zu einem anderen Problem sekundär sein kann. Vielleicht wird Ihr Parameter nicht korrekt übergeben? Überprüfen Sie den tatsächlichen Wert des Parameters, der im Datenstrom übergeben wird.