程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的顯式數值轉換

C#的顯式數值轉換

編輯:關於C語言

顯式數值轉換是指當不存在相應的隱式轉換時,從一種數字類型到另一種數字類型的轉換。包括:

●從sbyte到byte,ushort,uint,ulong,或char。

●從byte到sbyte或char。

●從short到sbyte,byte,ushort,uint,ulong,或char。

●從ushort到sbyte,byte,short,或char。

●從int到sbyte,byte,short,ushort,uint,ulong,或char。

●從uint到sbyte,byte,short,ushort,int,或char。

●從long到sbyte,byte,short,ushort,int,uint,ulong,或char。

●從ulong到sbyte,byte,short,ushort,int,uint,long,或char。

●從char到sbyte,byte,或short。

●從float到sbyte,byte,short,ushort,int,uint,long,ulong,char,或decimal。

●從double到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或decimal。

●從decimal到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或double。

這種類型轉換有可能丟失信息或導致異常拋出,轉換按照下列規則進行:

●對於從一種整型到另一種整型的轉換,編譯器將針對轉換進行溢出檢測,如果沒有發生溢出,轉換成功,否則拋出一個OverflowException異常。這種檢測還與編譯器中是否設定了checked選項有關。

●對於從float,double,或decimal到整型的轉換,源變量的值通過捨入到最接近的整型值作為轉換的結果。如果這個整型值超出了目標類型的值域,則將拋出一個OverflowException異常。

●對於從double到float的轉換,double值通過捨入取最接近的float值。如果這個值太小,結果將變成正0或負0;如果這個值太大,將變成正無窮或負無窮。如果原double值是Nan,則轉換結果也是NaN。

●對於從float或double到decimal的轉換,源值將轉換成小數形式並通過捨入取到小數點後28位(如果有必要的話)。如果源值太小,則結果為0;如果太大以致不能用小數表示,或是無窮和NaN,則將拋出InvalidCastException異常。

●對於從decimal到float或double的轉換,小數的值通過捨入取最接近的值。這種轉換可能會丟失精度,但不會引起異常。

程序清單6-6:

using system;

class Test
{
  static void Main(){
      long longValue=Int64.MaxValue;
      int intValue=(int)longValue;
      Console.WriteLine("(int){0}={1}",longValue,intValue);
    }
}

這個例子把一個int類型轉換成為long類型,輸出結果是:

(int)9223372036854775807=-1

這是因為發生了溢出,從而在顯式類型轉換時導致了信息丟失。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved