这篇文章是关于 C# 和 .Net 的,但有些信息对其他技术很有价值。
从我记事起,我就一直遇到应用程序或游戏因解析十进制数的不同风格而崩溃的问题。它经常发生,从 CAD 应用程序、库到网页。我不确定是无知还是缺乏知识,但这真的很烦人。
有什么问题?这是一篇关于它的wiki文章,但很简短:
这是一张显示世界各地使用哪种小数分隔符(十进制标记)的地图。
小数点:
- 期间 - 蓝色
- 逗号 - 绿色
- 非西阿拉伯数字——红色
- 未知 - 灰色
大多数欧洲,南美洲写 1 000 000,00 或 1000000,00 有时 1.000.000,00 与“帝国”相反(标记为蓝色)写 1,000,000.00
让我从我上个月遇到的所有问题中给你一些。
- 难以阅读的网页上的数字:让我们来看一个观看次数最多的 YT 视频。它告诉我390159851。超过一百万的数字很难阅读,数量级是多少?是3900万还是390?
适用于 Windows Phone 7 的Mirosoft XNA 示例:有一个非常简洁的类可以解析 XML 文件以生成 XNA 动画
/// <summary> /// Loads animation setting from xml file. /// </summary> private void LoadAnimiationFromXML() { XDocument doc = XDocument.Load("Content/Textures/AnimationsDefinition.xml"); XName name = XName.Get("Definition"); var definitions = doc.Document.Descendants(name); if (animationDefinition.Attribute("Speed") != null) { animation.SetFrameInvterval(TimeSpan.FromMilliseconds( double.Parse(animationDefinition.Attribute("Speed").Value))); }
double.Parse
抛出异常,一个简单的方法是使用XmlConvert.ToDouble();
或解析InvariantCulture
..Net 应用程序使用 CSV 文件将输入向量存储为 CSV - 也会抛出。
另一个在类中有一些解析的 .Net 应用程序 - 抛出。
那么我们该如何解决这个问题呢?
- 修复代码中的错误 - 只能使用可用的源代码并且很乏味。
- 更改数据(CVS、XML 等)——即使有可能,但对更改数据不太满意。
- 更改操作系统默认的小数点分隔符 - 不会发生。
有没有其他方法可以解决这个问题?我可以使应用程序保持不变吗?就像在不同的环境中启动应用程序一样。
PS。我想运行该应用程序,但我没有代码。