[問題] string轉換數字的問題

看板C_Sharp (C#)作者 (我愛阿蓉)時間15年前 (2010/10/11 12:22), 編輯推噓2(2012)
留言14則, 2人參與, 最新討論串1/1
////////////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

10/11 21:05, , 1F
我也遇到類似問題,我想要把一科學符號1,316671e+04
10/11 21:05, 1F

10/11 21:07, , 2F
轉成double,但是逗號應該是小數點,這是德國的表示法
10/11 21:07, 2F

10/11 21:07, , 3F
我也想要有人解答該怎麼轉呢?
10/11 21:07, 3F

10/11 21:08, , 4F
目前直接轉都是變成13166710000,正確應該是13166.71
10/11 21:08, 4F

10/11 23:52, , 5F
我直接寫string D = "1,316671e+04";
10/11 23:52, 5F

10/11 23:52, , 6F
Debug.WriteLine("{0}", D);
10/11 23:52, 6F

10/11 23:52, , 7F
double a = Convert.ToDouble(D);
10/11 23:52, 7F

10/11 23:52, , 8F
這樣可以是13166.71耶@@
10/11 23:52, 8F

10/11 23:56, , 9F
反而寫string D = "1.316671e+04";會exception...
10/11 23:56, 9F

10/11 23:57, , 10F
如果要不發生exception要改成double a = Convert.ToDouble(D,
10/11 23:57, 10F

10/11 23:58, , 11F
, System.Globalization.CultureInfo.InvariantCulture);
10/11 23:58, 11F

10/11 23:58, , 12F
當然我不曉得為啥 才波版請教各位= = 謝謝
10/11 23:58, 12F

10/12 15:18, , 13F
怎麼我們兩個跑出來結果不一樣 我不會發生例外
10/12 15:18, 13F

10/12 15:18, , 14F
但照你的寫也沒辦法成功= = 怪了
10/12 15:18, 14F
文章代碼(AID): #1Cif4HjS (C_Sharp)
文章代碼(AID): #1Cif4HjS (C_Sharp)