1. 程式人生 > >C#常見金額優選類型及其三種常用的取整方式

C#常見金額優選類型及其三種常用的取整方式

ref 3.5 運算符 ont keyword 計算 htm 有效 math

原文: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。 因此,若要初始化浮點型變量,請使用後綴 fF,如以下示例中所示:float x = 3.5F;

如果不在前面的聲明中使用後綴,則會收到編譯錯誤,因為你正嘗試將 double 值存儲到 float 變量。

微軟字符類型詳解:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/decimal

從小事做起,從點滴做起!

C#常見金額優選類型及其三種常用的取整方式