价格!=价格? - 页 8 12345678 新评论 leoa451 2020.03.06 02:22 #71 对于那些跳过所有障碍并尝试过所有解决方案的人来说,这是我为自己写的一个相当可靠的解决方案。 如果你还在寻找解决方案,这意味着你遇到了这样的情况。 将107.123111111和107.123999进行比较,结果是107.123 与107124 进行比较,因为有双重四舍五入的差异。 这里是我对这个问题的解决方案,它不考虑+1和-1的范围,以消除 比较中的双舍入差异。 试试这个。 // double compare by leoa451 int CompDoubleE0L1M2(double DoubleA, double DoubleB, int PointsToCompare) { int IntForDoubleA = (int)(MathFloor(MathPow(10,PointsToCompare) * DoubleA)); int IntForDoubleB = (int)(MathFloor(MathPow(10,PointsToCompare) * DoubleB)); if(IntForDoubleA >= IntForDoubleB-1 && IntForDoubleA <= IntForDoubleB+1) { return 0; } // if doubleA within +1/-1 range of doubleB (to compensate for the double rounding veriance) else if(IntForDoubleA < IntForDoubleB) { return 1; } // if doubleA < doubleB else if(IntForDoubleA > IntForDoubleB) { return 2; } // if doubleA > doubleB else return -2; // error } Dretta 2020.12.04 05:04 #72 如果只是简单地比较两个双数,并且需要一个bool的结果,这里有另一个解决方案。 // return true if same double value within digits comparison bool CompareDoubleEqual(double a, double b, int digits) { if (MathAbs(a - b) > MathPow(10, -digits)) return(false); return(true); } William Roeder 2020.12.04 14:17 #73 Dretta: 而这里是另一个解决方案,如果只是简单地比较两个双数,并需要一个bool的结果。 如果它们相差一个点,你就返回true。这是错的--它们不相等。 简化bool CompareDoubleEqual(double a, double b, int digits) { return MathAbs(a - b) < MathPow(10, -digits); }止损后增加订单 - MQL4编程论坛#1.3 2017.05.29 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对于那些跳过所有障碍并尝试过所有解决方案的人来说,这是我为自己写的一个相当可靠的解决方案。
如果你还在寻找解决方案,这意味着你遇到了这样的情况。
将107.123111111和107.123999进行比较,结果是107.123 与107124 进行比较,因为有双重四舍五入的差异。
这里是我对这个问题的解决方案,它不考虑+1和-1的范围,以消除 比较中的双舍入差异。
试试这个。
如果只是简单地比较两个双数,并且需要一个bool的结果,这里有另一个解决方案。
如果它们相差一个点,你就返回true。这是错的--它们不相等。
简化
止损后增加订单 - MQL4编程论坛#1.3 2017.05.29