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

在我的英语 WP7-Emulator 上显示正确的数字(标点符号 -> 即 2.33)。但是它不适用于我设置为德语的设备。

该值是正确的,但该双精度值中的点、逗号或其他内容未显示正确。

模拟器上的 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

好吧,我更进一步:

首先,我解析了我所有的字符串都像这样加倍

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 回答