2016-04-15 13 views
0

この問題を回避するのは苦労しています。C#浮動小数点数をfloatに変換してsql floatカラムに挿入する

私はというbalanceという列を持つエンタープライズDBテーブルを使用しています。

decimal値を挿入しようとしています。今ではC#で2桁の小数点を丸めて列に挿入してみましたが、これはこれだけです。 56.4000015258789私の値が56.40の場合。

私は自分の挿入の直前にデバッグしていて、丸められています。私は列を変更することはできません。 。 .soどのように私はこれを回避するのですか?

これは、sqlが分数をどのように考慮するかと関係があることを知っています。

小数点以下を文字列にフォーマットしてから、浮動小数点数に解析しても機能しませんでした。

+1

C#の 'float'は7桁の精度しか持たず、すべての非整数値を正確に表すことはできません。代わりに 'double'を試してください。 SQLの10進表記を維持する必要がある場合は、代わりに 'decimal'カラムを使用してください。 –

+0

@DStanley私はカラムを変更できません。本当にイライラします。 –

+0

@AdamV問題は、挿入前のfloat値が四捨五入されていることです。しかし、それは何らかの理由でsqlを取得すると、トレーニング番号を構成し始めます。 –

答えて

1

これは、SQLがfloatとdoublesの値に近似しているためです。これを回避する方法はありませんが、このデータがデータベースにどのように格納されるかという基本的な特徴です。もし私がこのポジションにいるのであれば、どうして私が列を変えることができないのか再評価するだろう。

あなたのオプションは、このようにしている:あなたのSELECT文でそれを使用する前にデータラウンド

  1. PKによって結合された別のテーブルを作成し、そこに正確な値 を格納します。

どちらのオプションも正直ではありません。

関連する問題