c#的小问题 我编写了一个小程序出现了这种情况,请大家帮忙分析: 大体是这样的: float a,b; if(a/b<=c) {} 结果是如果a/b恰好等于c时结果为假 但是将a/b的结果赋值给d,在和c比较就是真.为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我们说的float是十进制的,而内存里的float是二进制的。互相转换过程中会有误差,虽然这个误差很小,但足以影响判断是否相等的结果。以下来自:高质量C++/C编程指南(林锐)4.3.3 浮点变量与零值比较l 【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。 千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。 假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较转化为 if ((x>=-EPSINON) && (x<=EPSINON))其中EPSINON是允许的误差(即精度)。 ADO.NET,请教DataTableMapping类 HttpWebRequest 问题 怎样用xPath获得XmlNode节点的第一级子节点 奇了大怪了,C#文件读入后写不了UTF-8编码的文件========= 求:Socket传输的最大字节数 怎样将WEB电子地图嵌入到C#编写的windows应用程序中??? 关与imageList控件在FORM2中的使用 凯撒加密c#语言用windows窗体 为什么提示有问题? C# log4net疑问 这个数据库改成SqlParameter应该怎么写? BinaryFormatter
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货