SQLServer データベースがあり、float 型をインポートすると、正しくない値がインポートされます。
DB値:9.0 ES値:90.0
DB 値: 16.00 ES 値: 16000000000000004
値を float 型にマッピングし、リバー構成で scale:2 パラメータを設定しましたが、成功しませんでした。
SQLServer データベースがあり、float 型をインポートすると、正しくない値がインポートされます。
DB値:9.0 ES値:90.0
DB 値: 16.00 ES 値: 16000000000000004
値を float 型にマッピングし、リバー構成で scale:2 パラメータを設定しましたが、成功しませんでした。
私の推測では、どこかで値が文字列として解析され、間違ったカルチャでフォーマットされていると思います。たとえば、小数点がカンマの場合、ドットは (ほとんどの場合) 桁区切り記号になり、無視されます。
PS> Get-Culture
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
PS> [double]::Parse('9.0')
90
16 は正確な 16 ではないようです。
最も簡単な修正は、サーバーまたはマシンのロケールを変更することです。もう 1 つの選択肢は、それがコードのバグなのかフレームワークのバグなのかを突き止めることです。一般に、マシンで使用する数値をフォーマットまたは解析するときに常にカルチャ (.NET のインバリアント カルチャ、C の C ロケールなど) を指定することは常識ですが、多くのアプリケーションでもそれが間違っています。