当我们编写一款全球化软件的时候(特别是海外外包的软件项目,往往本土运行没有问题,部署到客户方,就有各类问题,时间也会是需要着重考虑的一个重要方面),就需要协调这些区域文化的差别。当时遇到了一个这样的问题,我想把string类型转换为double类型,如下图:
通过b和this.drpBaseLine.SelectedValue值的跟踪,你会发现我的string 0.2被转换成了2.0,这是不是个亮瞎了的问题,请你忽略网页刷新啊,没赋值啊各种问题,这里单纯的就是个string转double,转换的不正确。其实这涉及到全球化编程的问题,因为我当前的机器时区是荷兰的(当然可能还有一些其他的设置也是荷兰的),.net内置支持这种Globalization 的区别,会根据操作系统的 地区和语言自动加载相应文化区域的 framework 类库资源。
不同的区域,不同的文化,对于数值会有不同的表示方式,像荷兰他们的逗号代表的是小数点,点是分隔符,例如他们的“3,2"等价于我们的"3.2",那怎么解决区域不用这问题呢,其实dobule提供了一个接口用来设置区域的。如下图:
示列:
string a="0.25";
double b=double.Parse(a, System.Globalization.CultureInfo.InvariantCulture);// b=0.25
时间: 2024-10-14 21:30:38