精度

.Net 避免 float 转 double 丢失精度的办法

假如想象 提交于 2019-11-28 17:05:32
第一部分:float 转 double 丢失精度 类型 精度 位宽 C# 后缀 可以表示的数值范围 .Net 类名 float 7 位 32bit F -3.4 × 10^ 38 ~ +3.4 × 10^ 38 System.Single double 15~16 位 64bit D ±5.0 × 10^ −324 ~ ±1.7 × 10^ 308 System.Double decimal 28~29 位 128bit M (-7.9 x 10^ 28 ~ +7.9 x 10^ 28 ) / (10^ 0 ~ 28 ) System.Decimal 3 种类型,相互间的转换有 6 种: 转换 C# 代码 精度 结果 float 转 double (double) 10.45F 丢失 10.449999809265137D float 转 decimal (decimal) 10.45F 正常 10.45M double 转 float (float) 10.45D 正常 10.45F double 转 decimal (decimal) 10.45D 正常 10.45M decimal 转 float (float) 10.45M 正常 10.45F decimal 转 double (double) 10.45M 正常 10.45D 可以看到只有 float 转 double