標籤:正式 使用 font 向上取整 並且 資料 簡單 錯誤 偏差
原文:C#常見金額優選類型及其三種常用的取整方式
這兩天一直在做一個商城背景對賬方面的工作,忽然發現C#真的有很多值的學習的東西:
一、C#常用的三種取整方式(主要適用於double、decimal、float這一類型的資料):
Math.Round():為四捨六入五取整Math.ceilling():為向上取整(只要有小數存在都會加1)Math.Floor():向下取整,有小數都會捨去
二、Decimal、double、float資料類型介紹:
前言:之前在做金額計算的時候發現很多小數問題總是與實際金額有所偏差,還好是項目測試階段要是等項目正式上線了,數量一大的話那就不可估量的損失呀,別看一單只有那麼的幾分錢但是多了的話那可不可估量的損失,之前一直是使用double進行計算而後來及時發現了bug改成了使用decimal進行金額數量之間的計算。
1、Decimal資料類型:
儲存有符號表示 96 位 (12 個位元組) 整數變數 10 的冪縮放的數位 128 位 (16 個位元組) 值。 縮放因子指定數位小數點; 右側數它的範圍介於 0 到 28。 小數位元為 0 (沒有小數位),最大可能值為 + 79228162514264337593543950335 / (+ /-7.9228162514264337593543950335E + 28)。 帶 28 個小數的最大值是 + /-7.9228162514264337593543950335,和的最小的非零值為 + /-0.0000000000000000000000000001 (+ /-1E-28)。
Decimal
資料類型提供大量的最大有效位元數。 它支援最多 29 個有效位,並且可表示值超出 7.9228 x 10 ^28。 它是特別適合於計算,如財務、,需要大量的數字,但不能容忍舍入誤差。Decimal
的預設值為 0。初始化方式:decimal myMoney = 300.5m;
2、Double資料類型(雙精準浮點型):
保留帶符號的 IEEE 64 位元 (8 位元組) 雙精確度浮點數,從-1.79769313486231570 e + 308 到-的值的範圍 4.94065645841246544 e-324 負值和 4.94065645841246544 e-324 1.79769313486231570 e + 308 到正值。 雙精確度數字儲存實際數目的近似值。
Double
資料類型提供了大量的最大和最小可能大量度。
Double
的預設值為 0。初始化方式:double d=0.3D;
3、Float資料類型(單精準浮點型):
float
關鍵字表示儲存 32 位浮點值的簡單類型。 下表顯示了 float
類型的精度和大致範圍。
預設情況下,賦值運算子右側的實數被視為 double。 因此,若要初始化浮點型變數,請使用尾碼 f
或 F
,如以下樣本中所示:float x = 3.5F;
如果不在前面的聲明中使用尾碼,則會收到編譯錯誤,因為你正嘗試將 double 值儲存到 float
變數。
微軟字元類型詳解:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/decimal
從小事做起,從點滴做起!
C#常見金額優選類型及其三種常用的取整方式