なぜ私は浮動小数点文字列 "109.7"を解析し、結果をDBに 'float'列に挿入しますか109.7ではなく109.69999694824219を取得しますか?文字列番号のFloat.parseはDB内の別の数値になります
私はMicrosoft SQL Server 2008とC#を使用しています。数値の文字列は、テキスト入力フィールドから取得されます。
なぜ私は浮動小数点文字列 "109.7"を解析し、結果をDBに 'float'列に挿入しますか109.7ではなく109.69999694824219を取得しますか?文字列番号のFloat.parseはDB内の別の数値になります
私はMicrosoft SQL Server 2008とC#を使用しています。数値の文字列は、テキスト入力フィールドから取得されます。
浮動小数点数は完全精度ではありません。代わりにdecimal.Parseを使用する必要があります。
しかし、私のDB列は浮動小数点データ型に設定されています。私は浮動小数点数ではなく10進数に変更する必要がありますか?私はDB列を意味しますか? などfloat width =(float)decimal.Parse(w) –
数字を丸めてデータベースから取り出したり、データベースの型を10進数に変更したりする必要があります。 –
精度が必要な場合は、列のデータ型が間違っています。 ALTER TABLE dbo.MyTable ALTER COLUMN MyColumn decimal(18,2)アプリケーションに適したスケールと精度 – billinkc
例:http://stackoverflow.com/questions/2100490/floating-point-inaccuracy-examples – shelleybutterfly