2011-08-13 6 views
1

なぜ私は浮動小数点文字列 "109.7"を解析し、結果をDBに 'float'列に挿入しますか109.7ではなく109.69999694824219を取得しますか?文字列番号のFloat.parseはDB内の別の数値になります

私はMicrosoft SQL Server 2008とC#を使用しています。数値の文字列は、テキスト入力フィールドから取得されます。

+0

例:http://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples – shelleybutterfly

答えて

4

浮動小数点数は完全精度ではありません。代わりにdecimal.Parseを使用する必要があります。

+0

しかし、私のDB列は浮動小数点データ型に設定されています。私は浮動小数点数ではなく10進数に変更する必要がありますか?私はDB列を意味しますか? などfloat width =(float)decimal.Parse(w) –

+0

数字を丸めてデータベースから取り出したり、データベースの型を10進数に変更したりする必要があります。 –

+2

精度が必要な場合は、列のデータ型が間違っています。 ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn decimal(18,2)アプリケーションに適したスケールと精度 – billinkc

関連する問題