php 利用 PHP_FLOAT_EPSILON 浮点数比较问题

/ 0评 / 0

在处理基金数据的时候发现一个bug:想法是当amout小于等于0的时候跳出循环,代码像这样:

 if($amount<=self::EPSILON){ // $amount<=0
    break;
 }

很简单的逻辑。但实际测试发现有时并没有break,把数据打印出来后注意到amount是一个很小的数。第一反应应该是浮点数问题,解决方法也很简单直接:把0换成一个足够小的数,例如0.00001或者用PHP内置的最小浮点数常量PHP_FLOAT_EPSILON。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注