Home [C# 筆記] System.Convert 轉換
Post
Cancel

[C# 筆記] System.Convert 轉換

資料型別的轉換方法

資料型別的三種轉換方法:

  • System.Convert轉換
  • 型別.Parse方法
  • 指定轉換(Cast)

由於C# 是強型別(Strongly-Typed)而非弱型別(Weakly-Typed),所以在執行時期(Runtime)資料型別通常需要明確地宣告才能通過編譯器的嚴苛考驗。

System.Convert 轉換

System.Convert類別主要作用在於將基底資料型別轉換為其他的型別資料。

1
2
string s = "1234";
int number = Convert.ToInt32(s); //將字串變數轉換成32位元整數型態

Convert.ToInt32 對 null 的處理

Convert.ToInt32(null)會返回0不會產生任何異常。
int.Parse(null)會產生異常、產生Exception

1
2
Convert.ToInt32(null); //會返回0,不會產生任何異常。
int.Parse(null); //會產生異常、產生Exception

Convert.ToInt32 對小數點的處理(四捨六入五成雙)

Convert.ToInt32 有小數點比較特殊:

  • .1~.4 的話會「捨去」
  • .6~.9 的話會「進位」
  • .5 的進位與否是取決於:如果進位之後是該數是「偶數」的話就「進位」,是「奇數」的話就「捨去」
1
2
3
4
5
6
int x = Convert.ToInt32(7.1); //結果為 7  
int x = Convert.ToInt32(7.5); //結果為 8  
int x = Convert.ToInt32(7.9); //結果為 8  
int x = Convert.ToInt32(8.1); //結果為 8  
int x = Convert.ToInt32(8.5); //結果為 8  
int x = Convert.ToInt32(8.9); //結果為 9

使用這個函數時會有一個比較特別的現象,如果說 .1 ~ .4 的話會捨去,.6~.9 的話會進位,而 .5 的進位與否是取決於如果進位之後是該數是偶數的話就進位,是奇數的話就捨去。

以上面的範例來看,7.5 進位的話為 8,所以就進位,8.5 進位的話為 9,所以就捨去,這個現象又叫做「四捨六入五成雙」。

[C# 筆記](int)、Convert.ToInt32、int.Parse、int.TryParse by R
Book: Visual C# 2005 建構資訊系統實戰經典教本

This post is licensed under CC BY 4.0 by the author.