什么时候需要使用Double? double、float、decimal的区别
2014-06-23 10:07
441 查看
原文:什么时候需要使用Double?double、float、decimal的区别float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失(相对不存在,28个有效位后会报错),常用于银行帐目计算。(28个有效位)
floatf=345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
doubled=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimaldd=345.545454879.....//可以支持28位,对最后一位四舍五入。因为高精度,28位的有效位数,这才是财务计算中使用的最主要原因。
所有浮点数计算都有精度损失问题,而decimal同样是浮点数,所以同样有精度损失!
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失(相对不存在,28个有效位后会报错),常用于银行帐目计算。(28个有效位)
floatf=345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
doubled=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimaldd=345.545454879.....//可以支持28位,对最后一位四舍五入。因为高精度,28位的有效位数,这才是财务计算中使用的最主要原因。
所有浮点数计算都有精度损失问题,而decimal同样是浮点数,所以同样有精度损失!
下面的输出结果与不进行相加操作相同,并且没有异常。同样造成了精度损失,不过dd的有效位数超过了28位
@{decimaldd=100000000000000000000000000m;dd+=0.1m;}@string.Format("{0}",dd.ToString());
综上,如果你做财务方面,那么用decimal吧,如果你计算的数值是人类所用的,那么也用decimal吧。double感觉就是个鸡肋,还真想不出什么用到的地方。
相关文章推荐
- 什么时候需要使用Double? double、float、decimal的区别
- c#中decimal ,double,float的区别
- SQL的decimal、float、double类型的区别
- Decimal、 Float、 Double 使用
- MySQL中Decimal类型和Float Double等区别
- C#中decimal ,double,float的区别
- c#中decimal ,double,float的区别
- Sql中decimal、float、double类型的区别与用法
- 第四十八条:如果需要精确的答案,请避免使用float和double
- C#中decimal, double, float的区别
- decimal,float和double的区别
- MySQL float,double,decimal数据类型区别
- c#中decimal ,double,float的区别
- C# float double decimal 金额舍入 区别
- 表达式之谜2找零时刻(需要精确答案的地方,避免使用float和double;货币运算使用int,long或BigDecimal)
- decimal,float和double的区别
- float、double、long double类型的变量在printf()和scanf()中的占位符使用区别
- Sql的decimal、float、double类型的区别
- Sql的decimal、float、double类型的区别