文章目錄
decimal 在 C# 中的隱含轉換建構式
最近有個工作項目是將原本 jsp 的金流相關功能,搬遷到 C# 上 重要性不言可喻,加下小弟寫 java 的時間並不長,還是寫 android,jsp 只有聽過的程度 ^_^||
本來想趁機好好觀摩 java 的架構跟設計方式,剛動手沒多久就狂卡關
為了避免耽誤時程 於是立馬改變策略 –> 單純進行一個人工翻譯的動作
在不瞭解流程面跟 java 語法的情況下,可以想見問題一定是少不了,
問題描述
客戶填的金額是 500000,結果程式竟然只紀錄了 53
問題解析
程式碼
string a="500000"; var b =new Decimal(a[0]); Console.WriteLine(b);//53
程式碼說明
- a[0] 會將
a
這個 string 轉為 char[],接著取第 0 個位子也就是第一個數字5
5
可以理解,但53
哪來的?果然就是自己對 decimal 瞭解太少造成的
- a[0] 會將
decimal 的建構子有下列幾種 (可參考 MSDN)
- a. Decimal(Double)
- b. Decimal(Int32)
- C. Decimal(Int32, Int32, Int32, Boolean, Byte)
- d. Decimal(Int32[])
- e. Decimal(Int64)
- f. Decimal(Single)
- g. Decimal(UInt32)
- h. Decimal(UInt64)
發現了嗎?沒有一個是接受
char
的呀?!- a. Decimal(Double)
魔鬼就在細節裡,
Decimal 隱含轉換
原始程式碼在這
參考資料
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。