decimal转化为single(float) A1: decimal转成float或double数值会产生误差 float或double装成decimal时数值不会产生误差原因:decimal与另外两种类型的存储方法不同 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类型 大致范围 精度 .NET Framework 类型 double ±5.0×10−324到±1.7×10308 15到16 位 System.Double 类型 大致范围 精度 .NET Framework 类型 float ±1.5×10-45to±3.4×1038 7 位 System.Single 类型 大致范围 精度 .NET Framework 类型 decimal ±1.0×10e−28至±7.9× 10e28 28到29 System.Decimal 一个128位的,一个才32位。精度和数据表达范围,差远了。 你先转成double看看.......实在不行就迂回曲折一下。 精度指的是整数位+小数位的个数,当整数位不为0时例如 5.666666666666666666666666666666 精度是31保存到double中时由于超出了double本身的精度范围所以会舍位,得到5.66666666666667 精度15 有效数字14(最后的7是4四舍五入的)保存到float中得到5.666667 精度7 有效数字6 (最后的7是4四舍五入的)保存到decimal中得到5.666666666666666666666666667 精度 28 有效数字27 (最后的7是4四舍五入的)当整数位为0时例如 0.5666666666666666666666666666666 精度是32保存到double中时由于超出了double本身的精度范围所以会舍位,得到0.566666666666667 精度16 有效数字15(最后的7是4四舍五入的)保存到float中得到0.5666667 精度7 有效数字6 (最后的7是4四舍五入的)保存到decimal中得到0.5666666666666666666666666667 精度 29有效数字28(最后的7是4四舍五入的) 请看5楼我的回复,存储在decimal中的数值精度越高在转化成float或double时,产生的误差就越大 这个错误怎么改?关于Regex.IsMatch() 如何在代码中格式化GridView内容 listbox換行 怎样实现发送封包? Visual Studio .net 2003安装老失败。 请问怎么用SendMessage往web页面中的listbox发送消息,使其产生水平滚动条? control类子类怎么实现可拖动边框改变尺寸? 处女贴!C#多线程的困扰~ 使用接口的时候哪种调用方法好? 关于listbox的一个问题 关于语音聊天室 一个C#的简单问题
double ±5.0×10−324到±1.7×10308 15到16 位 System.Double 类型 大致范围 精度 .NET Framework 类型
float ±1.5×10-45to±3.4×1038 7 位 System.Single 类型 大致范围 精度 .NET Framework 类型
decimal ±1.0×10e−28至±7.9× 10e28 28到29 System.Decimal
例如 5.666666666666666666666666666666 精度是31保存到double中时由于超出了double本身的精度范围所以会舍位,
得到5.66666666666667 精度15 有效数字14(最后的7是4四舍五入的)保存到float中
得到5.666667 精度7 有效数字6 (最后的7是4四舍五入的)保存到decimal中
得到5.666666666666666666666666667 精度 28 有效数字27 (最后的7是4四舍五入的)当整数位为0时
例如 0.5666666666666666666666666666666 精度是32保存到double中时由于超出了double本身的精度范围所以会舍位,
得到0.566666666666667 精度16 有效数字15(最后的7是4四舍五入的)保存到float中
得到0.5666667 精度7 有效数字6 (最后的7是4四舍五入的)保存到decimal中
得到0.5666666666666666666666666667 精度 29有效数字28(最后的7是4四舍五入的)
请看5楼我的回复,
存储在decimal中的数值精度越高在转化成float或double时,产生的误差就越大