【问题标题】:different results on emulator and windows phone device c#模拟器和 Windows Phone 设备 c# 上的不同结果
【发布时间】:2013-01-19 14:54:42
【问题描述】:

所以我正在开发一个进行一些计算的应用程序。它从 txt 中读取一些数字,将它们转换为 double,然后将它们相乘后得到结果。

假设 txt 的数字是 10.5 和 2

string string1 = "10.5", string2 = "2";
double double1 = Convert.ToDouble(string1), double2=Convert.ToDouble(string2);
double double3=double1*double2;
textbox.text= double3.ToString();

我总是在模拟器上得到的结果是 21,而在我的设备上我得到 210。我尝试从手机重新安装应用程序,重新启动手机和电脑,我尝试了 10 多次。我仍然在手机上得到不同的结果。我该怎么办?

PS:我试过 double.parse 但还是一样

【问题讨论】:

  • 听起来像是文化问题?是否可以将. 作为千位分隔符读取并忽略它?
  • 所以你建议添加“,”而不是“。” ?
  • 但在模拟器上它工作得很好。这是为什么?
  • @user1924391 手机和模拟器可能在不同的语言环境下工作。一个解释“。”作为小数点,另一个将其解释为数字分隔符。
  • 因为模拟器运行的语言环境与您的计算机相同;手机可能不行。尝试Double.Parse 并指定文化,看看是否能解决问题。

标签: c# windows-phone-7 windows-phone-7.1 windows-phone-8 windows-phone


【解决方案1】:

基于手机和模拟器在不同的语言环境下工作,那么这个 SO 问题回答了真正被问到的问题 how-to-convert-string-to-double-with-proper-cultureinfo

当然,您现在必须将您的文本文件与正确的语言环境相匹配。

另见what-does-cultureinfo-invariantculture-mean

【讨论】:

  • 谢谢。我会看看。 txt 使用“。”作为小数点,我希望手机无论在什么语言环境下工作,都将其用作小数点。
  • 我尝试了以下方法,它在手机和模拟器上都有效。谢谢大家! double.Parse(Settings.appSettings[tcholcLog].ToString(), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2015-03-06
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多