C#常见金额优选类型及其三种常用的取整方式
這兩天一直在做一個(gè)商城后臺(tái)的對(duì)賬方面的工作,忽然發(fā)現(xiàn)C#真的有很多值的學(xué)習(xí)的東西:
一、C#常用的三種取整方式(主要適用于double、decimal、float這一類型的數(shù)據(jù)):
Math.Round():為四舍六入五取整 Math.ceilling():為向上取整(只要有小數(shù)存在都會(huì)加1) Math.Floor():向下取整,有小數(shù)都會(huì)舍去二、Decimal、double、float數(shù)據(jù)類型介紹:
前言:之前在做金額計(jì)算的時(shí)候發(fā)現(xiàn)很多小數(shù)問題總是與實(shí)際金額有所偏差,還好是項(xiàng)目測(cè)試階段要是等項(xiàng)目正式上線了,數(shù)量一大的話那就不可估量的損失呀,別看一單只有那么的幾分錢但是多了的話那可不可估量的損失,之前一直是使用double進(jìn)行計(jì)算而后來及時(shí)發(fā)現(xiàn)了bug改成了使用decimal進(jìn)行金額數(shù)量之間的計(jì)算。
1、Decimal數(shù)據(jù)類型:
保存有符號(hào)表示 96 位 (12 個(gè)字節(jié)) 整數(shù)變量 10 的冪縮放的數(shù)字的 128 位 (16 個(gè)字節(jié)) 值。?縮放因子指定數(shù)字的小數(shù)點(diǎn); 右側(cè)數(shù)它的范圍介于 0 到 28。?小數(shù)位數(shù)為 0 (沒有小數(shù)位),最大可能值為 + 79228162514264337593543950335 / (+ /-7.9228162514264337593543950335E + 28)。?帶 28 個(gè)小數(shù)的最大值是 + /-7.9228162514264337593543950335,和的最小的非零值為 + /-0.0000000000000000000000000001 (+ /-1E-28)。
Decimal數(shù)據(jù)類型提供大量的最大有效位數(shù)數(shù)。?它支持最多 29 個(gè)有效位,并且可表示值超出 7.9228 x 10 ^28。?它是特別適合于計(jì)算,如財(cái)務(wù)、,需要大量的數(shù)字,但不能容忍舍入誤差。Decimal?的默認(rèn)值為 0。初始化方式:decimal myMoney = 300.5m;
?
2、Double數(shù)據(jù)類型(雙精準(zhǔn)浮點(diǎn)型):
保留帶符號(hào)的 IEEE 64 位 (8 字節(jié)) 雙精度浮點(diǎn)數(shù),從-1.79769313486231570 e + 308 到-的值的范圍 4.94065645841246544 e-324 負(fù)值和 4.94065645841246544 e-324 1.79769313486231570 e + 308 到正值。?雙精度數(shù)字存儲(chǔ)實(shí)際數(shù)目的近似值。
Double數(shù)據(jù)類型提供了大量的最大和最小可能大量度。
Double?的默認(rèn)值為 0。初始化方式:double d=0.3D;
?
3、Float數(shù)據(jù)類型(單精準(zhǔn)浮點(diǎn)型):
float?關(guān)鍵字表示存儲(chǔ) 32 位浮點(diǎn)值的簡單類型。?下表顯示了?float?類型的精度和大致范圍。
默認(rèn)情況下,賦值運(yùn)算符右側(cè)的實(shí)數(shù)被視為?double。?因此,若要初始化浮點(diǎn)型變量,請(qǐng)使用后綴?f?或?F,如以下示例中所示:float x = 3.5F;
如果不在前面的聲明中使用后綴,則會(huì)收到編譯錯(cuò)誤,因?yàn)槟阏龂L試將?double?值存儲(chǔ)到?float?變量。
微軟字符類型詳解:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/decimal
從小事做起,從點(diǎn)滴做起!
?
總結(jié)
以上是生活随笔為你收集整理的C#常见金额优选类型及其三种常用的取整方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据营销的7个雷区,千万别中招
- 下一篇: 电子书下载:The C# Program