私は英国にいます。ドイツに SQL Server 2008 R2 Express がインストールされた Windows 2008 サーバーがあります。Windows の地域設定は UK に設定されています。SQL Server の言語は英語に設定されています。私が走るとき
sp_helplanguage @@LANGUAGE
に設定されていることを示しています。
us_english
データベースには、float データ型を持つ多数のテーブルがあります。SSMS を使用して float 値の 1 つを変更するときに、
1234.1234
まず、次のように表示されます
1234,1234
行をクリックして保存すると、次のように表示されます
12341234
ストアド プロシージャを介してデータが提供され、double (VB.NET) に配置される ASP.NET アプリケーションは、次のことを行います。
String.Format("{0:#0.0000}", dMyDouble)
これは次のようにレンダリングされます
12341234,0000
言うまでもなく、私のローカル サーバー (すべて英国ベース) では、データベースに入力されたすべての数値が予想どおり (1234.1234) に表示され、.NET では予想どおり (1234.1234) にフォーマットされます。私のヨーロッパの友人が英国で私たちとは異なる表記法を使用していることは承知していますが、出力するには英国の形式が必要であり、さらに重要なのはデータベース内のフロートです!
.NET が正しくフォーマットされていないという事実は、数値が正確さを格納していないという事実に純粋に関係していると思います。
また、10 進数の列 (18, 4) を使用して少し遊んだところ、同様の結果が得られました。ポイント (.) を使用して 1234.1234 と入力すると、コンマ (,) に置き換えられます。行が保存されると、次のように保存されます
12341234.0000