0
int min = Int32.Parse(minutebox.Text);
double kj = Convert.ToDouble(a.kj);
double res = ((kj * op.koerpergewicht) * min);
textbox.Text = res.ToString();

英語の WP7 エミュレーターで正しい番号 (句読点を含む -> 2.33) を表示します。ただし、ドイツ語に設定されている私のデバイスでは機能しません。

値は正しいですが、その double 値のポイント、コンマなどは正しく表示されません。

エミュレータの 43.22 -> デバイスの 4322

何故ですか?

4

2 に答える 2

2

ただし、ドイツ語に設定されている私のデバイスでは機能しません。

デフォルトではドイツ語の記号が使用されます。常に「.」を使用したい場合 小数点として、解析および場合によっては書式設定のためにインバリアント カルチャを指定することを検討する必要があります。

何が何であるかを知らずにコードを修正するのは難しいですが、使用することをおkj勧めします

double value = double.Parse(text, CultureInfo.InvariantCulture);
// Do calculation...
textBox.Text = result.ToString(CultureInfo.InvariantCulture);

ただし、デバイスのカルチャをオーバーライドしてもよろしいです? 私には素晴らしいアイデアのようには聞こえません。もちろん、テキストを別の場所からフェッチする場合は、インバリアント カルチャで解析したいかもしれませんが、デバイスの既定のカルチャで書式設定します。

于 2012-09-16T17:13:11.110 に答える
0

了解しました。さらに詳しく説明します。

まず、すべての文字列をこのように2倍に解析しました

op.mydouble = Double.Parse(rawkg,CultureInfo.InvariantCulture);

InvariantCultureの部分は非常に重要です。

残りの計算は次のようになりました。

 double res = 0; double reskcal = 0;
                double reskj;

                    res = ((kj * op.koerpergewicht) * min);
                    reskj = Convert.ToDouble(res, CultureInfo.InvariantCulture);
                    reskcal = Convert.ToDouble((res * 0.239), CultureInfo.InvariantCulture);

今の問題は、そのreskcalが私を返しているということです:

11,317845

Math.Round(11,317845,2)は役に立ちませんでした。

于 2012-09-16T21:34:44.803 に答える