在处理基金数据的时候发现一个bug:想法是当amout小于等于0的时候跳出循环,代码像这样:
if($amount<=self::EPSILON){ // $amount<=0
break;
}
很简单的逻辑。但实际测试发现有时并没有break,把数据打印出来后注意到amount是一个很小的数。第一反应应该是浮点数问题,解决方法也很简单直接:把0换成一个足够小的数,例如0.00001或者用PHP内置的最小浮点数常量PHP_FLOAT_EPSILON。
在处理基金数据的时候发现一个bug:想法是当amout小于等于0的时候跳出循环,代码像这样:
if($amount<=self::EPSILON){ // $amount<=0
break;
}
很简单的逻辑。但实际测试发现有时并没有break,把数据打印出来后注意到amount是一个很小的数。第一反应应该是浮点数问题,解决方法也很简单直接:把0换成一个足够小的数,例如0.00001或者用PHP内置的最小浮点数常量PHP_FLOAT_EPSILON。