看板 C_Sharp 關於我們 聯絡資訊
////////////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
reptile0426:我也遇到類似問題,我想要把一科學符號1,316671e+04 10/11 21:05
reptile0426:轉成double,但是逗號應該是小數點,這是德國的表示法 10/11 21:07
reptile0426:我也想要有人解答該怎麼轉呢? 10/11 21:07
reptile0426:目前直接轉都是變成13166710000,正確應該是13166.71 10/11 21:08
QQ29:我直接寫string D = "1,316671e+04"; 10/11 23:52
QQ29:Debug.WriteLine("{0}", D); 10/11 23:52
QQ29:double a = Convert.ToDouble(D); 10/11 23:52
QQ29:這樣可以是13166.71耶@@ 10/11 23:52
QQ29:反而寫string D = "1.316671e+04";會exception... 10/11 23:56
QQ29:如果要不發生exception要改成double a = Convert.ToDouble(D, 10/11 23:57
QQ29:, System.Globalization.CultureInfo.InvariantCulture); 10/11 23:58
QQ29:當然我不曉得為啥 才波版請教各位= = 謝謝 10/11 23:58
reptile0426:怎麼我們兩個跑出來結果不一樣 我不會發生例外 10/12 15:18
reptile0426:但照你的寫也沒辦法成功= = 怪了 10/12 15:18