作者QQ29 (我爱阿蓉)
看板C_Sharp
标题[问题] string转换数字的问题
时间Mon Oct 11 12:22:38 2010
////////////Case 1////////////
string D = "0.87891";
Debug.WriteLine("{0}", D); //印出0,87891
double d = Convert.ToDouble(D); //发生Exception.
////////////Case 2////////////
double D = 123.456;
Debug.WriteLine("{0}", D.ToString()); //印出123,456
double d = Convert.ToDouble(D.ToString()); //没事 竟然转得回来123.456
请教一下
我在非英文语系的环境下
发现ToString会把.转成,
但是我非常无法理解 Case 1和2为啥一个会exception一个不会
Case 1需要改成
double d = Convert.ToDouble(D,
System.Globalization.CultureInfo.InvariantCulture);
才不会exception....
请问差异在哪呢.....
是不是所有ToString的case或是convert的case都加上
System.Globalization.CultureInfo.InvariantCulture
会比较稳 在支援多国语言的环境下.....
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.64.222
1F:推 reptile0426:我也遇到类似问题,我想要把一科学符号1,316671e+04 10/11 21:05
2F:→ reptile0426:转成double,但是逗号应该是小数点,这是德国的表示法 10/11 21:07
3F:→ reptile0426:我也想要有人解答该怎麽转呢? 10/11 21:07
4F:→ reptile0426:目前直接转都是变成13166710000,正确应该是13166.71 10/11 21:08
5F:→ QQ29:我直接写string D = "1,316671e+04"; 10/11 23:52
6F:→ QQ29:Debug.WriteLine("{0}", D); 10/11 23:52
7F:→ QQ29:double a = Convert.ToDouble(D); 10/11 23:52
8F:→ QQ29:这样可以是13166.71耶@@ 10/11 23:52
9F:→ QQ29:反而写string D = "1.316671e+04";会exception... 10/11 23:56
10F:→ QQ29:如果要不发生exception要改成double a = Convert.ToDouble(D, 10/11 23:57
11F:→ QQ29:, System.Globalization.CultureInfo.InvariantCulture); 10/11 23:58
12F:→ QQ29:当然我不晓得为啥 才波版请教各位= = 谢谢 10/11 23:58
13F:推 reptile0426:怎麽我们两个跑出来结果不一样 我不会发生例外 10/12 15:18
14F:→ reptile0426:但照你的写也没办法成功= = 怪了 10/12 15:18