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#常见金额优选类型及其三种常用的取整方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据营销的7个雷区,千万别中招
- 下一篇: bzoj1560:[JSOI2009]火