这两天一直在做一个商城后台的对账方面的工作,忽然发现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
从小事做起,从点滴做起!