【入門級】-[資料型別]-資料型別轉換

更新於 發佈於 閱讀時間約 7 分鐘

當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹:

一、自動轉型

運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是小範圍可以放入大範圍中,但大範圍無法放入小範圍去做運算。還是不懂?沒關係這邊用例子來說明:

正常處理:

double A = 120;
double B;
B = A + 3.45;
A = B * 2;
說明:
第一行:宣告倍精度浮點數A,且初始值為120
第二行:宣告倍精度浮點數B,無特別設定初始值
第三行:(1)B的值要看"="右邊的值,也就是120+3.45=123.45
    (2)得知B為123.45

第四行:(1)A的值要看"="右邊的值,也就是B*2
    (2)這個B值呢!是看最後的結果也就是123.45
    (3)因此B*2 = 123.45 * 2 = 246.9,得知A最後的值為246.9


遇到需要做轉換的狀況就會是:

int A = 120;
double B;
B = A + 3.45;
A = B * 2;
說明:
第一行:宣告整數A,且初始值為120
第二行:宣告倍精度浮點數B,無特別設定初始值
第三行:(1)運算結果是存到B,因此運算內容要與B的資料型別相同
    (2)由於B是double(倍精度浮點數),A是int(整數),int轉double是不會影響精確度的
    (3)因此A就會從int自動轉換為double型別後再做運算

第四行:(1)此時就不一樣了,運算結果是存到整數型別A
    (2)雖然運算內容”2”是整數沒問題,但B卻是倍精度浮點數
    (3)因此精確度是會被影響到,無論B的值是不是2.0000這樣的數值,電腦都會出現錯誤


只要「運算結果的資料型別」可以容納的下「運算內容的資料型別」範圍,電腦就可以暫時再那一行運算當中做自動轉換型態的動作。


二、明確轉型

有一個Type Cast的方法可以強行轉換資料型別,方法:

結果值 = (想要強迫轉換的型別)運算式 或 變數名稱;

這邊舉個例子:

int A;
double B = 3.14;
A = (int)B;

由於B是double而A是int,要將B的值給予A但型別不符,因此使用A的型別將B強制轉換為int,此時A的結果為3。

因為是強制轉換關係,因此會遺失小數點後面的值,所以在使用的時候要注意。


三、Parse方法

若遇到文字型別的數字,想要將它轉為數值時,就可以使用Parse()方法來轉換,方法:

數值變數 = 資料型別.Parse(文字型別的數字);

什麼是文字型別的數字?就是

string C = ”66”;

像這樣的形式就是文字型別的數字,string是字串型別可以加入文字的,但也會接收到有關數字的時候,倘若說字串中只有數字時想要轉為數值就可以使用Parse()方法若字串中有非數字時可能轉換時就會出現錯誤唷

用上面例子舉例就會是:

Int D = int.Parse(“66”);


四、轉換成字串

1.自動轉換

由於有時候在使用VC#時會用到工具箱的Label元件,那麼此時想要將一些數字轉成文字型態就可以這麼做:

string msg = ”今年是”;
int year = 2023;
Label.Text = msg + year;

那麼Label.Text會因為”+”號而將兩者做串接,輸出結果就為「今年是2023」這樣的字串,那麼year也會在這當中暫時自動轉換為字串型別。

2.明確轉換

有時候查詢日期時間或是其他內容的時候就需要去做轉換的動作,那麼有兩種可以明確轉換方法就是:

(1)字串變數 = Convert.ToString(要轉換的資料 或 變數名稱);
(2)字串變數 = 要轉換的資料 或 變數名稱 .ToString();

舉例:

int A = 2023
string B = Convert.ToString(2023);
string BB = Convert.ToString(A);
string C = 2023.ToString();
string CC = A.ToString();


筆記補充:日期時間的轉換

1.取得當下時間

DateTime dtNow= DateTime.Now;
string S= dtNow.ToString("yyyy-MM-dd HH:mm:ss");
DateTime dt=Convert.ToDateTime(S);
說明:
(1)第一行是取得當下時間
(2)第二行是將資料字串格式化
yyyy-MM-dd是年月日部分
HH:mm:ss是時分秒數的部分(這邊的HH是24小時制,改成hh就為12小時制了)
(3)第三行是將字串轉回日期格式


2.時間差計算

DateTime dt1= Convert.ToDateTime("2023-03-29 00:00:00");
DateTime dt2= Convert.ToDateTime("2023-03-30 00:00:00");
TimeSpan ts = dt2- dt1;

double dDateDiff = ts.TotalDays;
label1.Text = "日期相差 " + Convert.ToInt32(dDateDiff).ToString() + "天";

int iDateDiff = ts.Days;
label2.Text = "日期相差 " + iDateDiff.ToString() + "天";
說明:
1.第一、二行是取得兩個時間
2.第三行是做相差運算,得知時間差距
3.第四、五行是使用.TotalDays來做處理,但是TotalDays是double型別,因此會有小數問題,故在做顯示的時候會將運算後的值強制轉成32位元的整數型態
4.第六、七行是使用.Days來做處理,由於Days為int型別,因此不會有小數問題,可直接做顯示沒有問題的。

參考內容:
1.Visual C# 2017基礎必修課
2.C# Date() 日期與時間
3.C# Tips: TimeSpan 的 TotalDays

留言
avatar-img
留言分享你的想法!
avatar-img
橙果杏的沙龍
25會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
橙果杏的沙龍的其他內容
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
一、自動轉型-二、明確轉型-三、Parse方法-補充、日期時間的轉換>>> 當我們在撰寫程式過程中,有可能會遇到在做資料處理時與一開始宣告的資料型別不一樣,這時就會需要資料型別轉換了。那這邊有四種轉換介紹: 一、自動轉型 運算過程中在精確度不會改變時,程式就會自動幫我們做轉型處理,什麼意思呢?就是
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
C#跟其他程式語言最大的差別,在於它有嚴格規定資料型態,這篇文章將會講述 C#中資料型態轉換的方式,並藉由官方的範例來介紹各個關鍵字和陳述式,說明他們的運作原理。
Thumbnail
C#跟其他程式語言最大的差別,在於它有嚴格規定資料型態,這篇文章將會講述 C#中資料型態轉換的方式,並藉由官方的範例來介紹各個關鍵字和陳述式,說明他們的運作原理。
Thumbnail
分類 △單精度浮點數、單精度浮點值(float) △雙精度浮點數、雙精度浮點值(double) △長雙精度浮點數、長雙精度浮點值(long double) 有效位數是什麼? 儲存形式 不精確的原因 範圍與有效位數的差別 浮點數不被建議使用的原因 精確問題 速度問題 結論
Thumbnail
分類 △單精度浮點數、單精度浮點值(float) △雙精度浮點數、雙精度浮點值(double) △長雙精度浮點數、長雙精度浮點值(long double) 有效位數是什麼? 儲存形式 不精確的原因 範圍與有效位數的差別 浮點數不被建議使用的原因 精確問題 速度問題 結論
Thumbnail
說明 重點 △定義變數 △文字的定義 △文字與數字的差別 △整數與浮點數 △signed(有號)與unsigned(無號)的區別 △e是什麼符號? 分類 △字元 △字串 △短整數 △整數 △長整數 △超長整數 △單精度浮點數 △雙精度浮點數 △長雙精度浮點數 應用 宣告與輸出 運算符 結論
Thumbnail
說明 重點 △定義變數 △文字的定義 △文字與數字的差別 △整數與浮點數 △signed(有號)與unsigned(無號)的區別 △e是什麼符號? 分類 △字元 △字串 △短整數 △整數 △長整數 △超長整數 △單精度浮點數 △雙精度浮點數 △長雙精度浮點數 應用 宣告與輸出 運算符 結論
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News