0

SQLServer データベースがあり、float 型をインポートすると、正しくない値がインポートされます。

DB値:9.0 ES値:90.0

DB 値: 16.00 ES 値: 16000000000000004

値を float 型にマッピングし、リバー構成で scale:2 パラメータを設定しましたが、成功しませんでした。

4

1 に答える 1

1

私の推測では、どこかで値が文字列として解析され、間違ったカルチャでフォーマットされていると思います。たとえば、小数点がカンマの場合、ドットは (ほとんどの場合) 桁区切り記号になり、無視されます。

PS> Get-Culture

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            German (Germany)


PS> [double]::Parse('9.0')
90

16 は正確な 16 ではないようです。

最も簡単な修正は、サーバーまたはマシンのロケールを変更することです。もう 1 つの選択肢は、それがコードのバグなのかフレームワークのバグなのかを突き止めることです。一般に、マシンで使用する数値をフォーマットまたは解析するときに常にカルチャ (.NET のインバリアント カルチャ、C の C ロケールなど) を指定することは常識ですが、多くのアプリケーションでもそれが間違っています。

于 2013-04-01T10:25:58.850 に答える