decimal result=1/2; // result=0在此例中,結果卻會是「0」,而不是我們預期的「0.5」。
這是因為「除數」與「被除數」都是 int 型態,所以預設的運算會回傳整數型態的商數(integer quotient)。
若相關數值為變數型態,則計算結果就更可能不是我們所預期的,萬一這是在計算你銀行的存款利息的某個公式,那肯定會天下大亂!!
所以,若需要有小數位數的商數,可以這麼寫:
decimal result=1m/2; // result=0.5或是
decimal result=(decimal)1/2; // result=0.5把除數(或被除數)轉型成decimal型態,就會是正常的商數 0.5 了。
為了避免精度轉換之間造成的誤差及影響,所以我沒使用大多數範例提的double型態,而選用了decimal型態。
參考資料:/ Operator (C# Reference)
感謝您的教學。
回覆刪除