作者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