int min = Int32.Parse(minutebox.Text);
double kj = Convert.ToDouble(a.kj);
double res = ((kj * op.koerpergewicht) * min);
textbox.Text = res.ToString();
在我的英文版WP7-Emulator上显示正确的数字(带标点符号 - > e。2.33)。但是它不能在我的设备上运行,设备设置为德语。
该值是正确的,但该双精度值中的点,逗号或其他内容未正确显示。
模拟器上的43.22 - >设备上的4322
为什么?
答案 0 :(得分:2)
但是它在我的设备上无效,设备设置为德语。
默认情况下将使用德语符号。如果你想总是使用“。”作为小数点,您应该考虑指定用于解析和可能格式化的不变文化。
在不知道kj
是什么的情况下很难纠正您的代码,但我建议使用
double value = double.Parse(text, CultureInfo.InvariantCulture);
// Do calculation...
textBox.Text = result.ToString(CultureInfo.InvariantCulture);
你真的确定你想要覆盖设备的文化吗?这对我来说听起来不是一个好主意。当然,如果您从其他地方获取文本,您可能希望使用不变文化解析,但仍然在设备默认文化中对其进行格式化。
答案 1 :(得分:0)
好吧,我走得更远:
首先,我解析了所有我的Strings像这样的双重
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)没有帮助。