<?php
echo "<br/>---------------------------------------------------<br/>";
$wfundamt = 100000;
$ratio = -0.009999;while($ratio <= 0.009999){
$profit = 0;
$var = $wfundamt * $ratio;
if(strpos($var,'.')){
$profit = floor($wfundamt * $ratio);
}else{
$profit = $var;
}
echo $wfundamt ." * " . $ratio . "=" .$var ." --- ". $profit ."<br/>";
$ratio = $ratio + 0.000001 ;
}
echo "<br/>---------------------------------------------------<br/>";?>
上面是源程序,执行结果为下,一部分:---------------------------------------------------
100000 * -0.009999=-999.9 --- -1000
100000 * -0.009998=-999.8 --- -1000
100000 * -0.009997=-999.7 --- -1000
100000 * -0.009996=-999.6 --- -1000
100000 * -0.009995=-999.5 --- -1000
100000 * -0.009994=-999.4 --- -1000
100000 * -0.009993=-999.3 --- -1000
100000 * -0.009992=-999.2 --- -1000
100000 * -0.009991=-999.1 --- -1000
100000 * -0.00999=-999 --- -999
100000 * -0.009989=-998.9 --- -999
100000 * -0.009988=-998.8 --- -999
100000 * -0.009987=-998.7 --- -999
100000 * -0.009986=-998.6 --- -999
100000 * -0.009985=-998.5 --- -999
……
100000 * -0.00994=-994 --- -994
100000 * -0.009939=-993.9 --- -994
100000 * -0.009938=-993.8 --- -994
100000 * -0.009937=-993.7 --- -994
100000 * -0.009936=-993.6 --- -994
100000 * -0.009935=-993.5 --- -994
100000 * -0.009934=-993.4 --- -994
100000 * -0.009933=-993.3 --- -994
100000 * -0.009932=-993.2 --- -994
100000 * -0.009931=-993.1 --- -994
100000 * -0.00993=-993.00000000001 --- -994
100000 * -0.0099290000000001=-992.90000000001 --- -993
100000 * -0.0099280000000001=-992.80000000001 --- -993
100000 * -0.0099270000000001=-992.70000000001 --- -993
100000 * -0.0099260000000001=-992.60000000001 --- -993
100000 * -0.0099250000000001=-992.50000000001 --- -993
100000 * -0.0099240000000001=-992.40000000001 --- -993
100000 * -0.0099230000000001=-992.30000000001 --- -993
100000 * -0.0099220000000001=-992.20000000001 --- -993
……
100000 * 0.0099979999999982=999.79999999982 --- 999
100000 * 0.0099989999999982=999.89999999982 --- 999---------------------------------------------------注意这一段:
100000 * -0.009932=-993.2 --- -994
100000 * -0.009931=-993.1 --- -994
100000 * -0.00993=-993.00000000001 --- -994
100000 * -0.0099290000000001=-992.90000000001 --- -993
到这儿为什么不正常递增了?
显示的是-0.00993 结果却为-993.00000000001
遇到过这种情况没有?
请高人解说说明分析探讨……
echo "<br/>---------------------------------------------------<br/>";
$wfundamt = 100000;
$ratio = -0.009999;while($ratio <= 0.009999){
$profit = 0;
$var = $wfundamt * $ratio;
if(strpos($var,'.')){
$profit = floor($wfundamt * $ratio);
}else{
$profit = $var;
}
echo $wfundamt ." * " . $ratio . "=" .$var ." --- ". $profit ."<br/>";
$ratio = $ratio + 0.000001 ;
}
echo "<br/>---------------------------------------------------<br/>";?>
上面是源程序,执行结果为下,一部分:---------------------------------------------------
100000 * -0.009999=-999.9 --- -1000
100000 * -0.009998=-999.8 --- -1000
100000 * -0.009997=-999.7 --- -1000
100000 * -0.009996=-999.6 --- -1000
100000 * -0.009995=-999.5 --- -1000
100000 * -0.009994=-999.4 --- -1000
100000 * -0.009993=-999.3 --- -1000
100000 * -0.009992=-999.2 --- -1000
100000 * -0.009991=-999.1 --- -1000
100000 * -0.00999=-999 --- -999
100000 * -0.009989=-998.9 --- -999
100000 * -0.009988=-998.8 --- -999
100000 * -0.009987=-998.7 --- -999
100000 * -0.009986=-998.6 --- -999
100000 * -0.009985=-998.5 --- -999
……
100000 * -0.00994=-994 --- -994
100000 * -0.009939=-993.9 --- -994
100000 * -0.009938=-993.8 --- -994
100000 * -0.009937=-993.7 --- -994
100000 * -0.009936=-993.6 --- -994
100000 * -0.009935=-993.5 --- -994
100000 * -0.009934=-993.4 --- -994
100000 * -0.009933=-993.3 --- -994
100000 * -0.009932=-993.2 --- -994
100000 * -0.009931=-993.1 --- -994
100000 * -0.00993=-993.00000000001 --- -994
100000 * -0.0099290000000001=-992.90000000001 --- -993
100000 * -0.0099280000000001=-992.80000000001 --- -993
100000 * -0.0099270000000001=-992.70000000001 --- -993
100000 * -0.0099260000000001=-992.60000000001 --- -993
100000 * -0.0099250000000001=-992.50000000001 --- -993
100000 * -0.0099240000000001=-992.40000000001 --- -993
100000 * -0.0099230000000001=-992.30000000001 --- -993
100000 * -0.0099220000000001=-992.20000000001 --- -993
……
100000 * 0.0099979999999982=999.79999999982 --- 999
100000 * 0.0099989999999982=999.89999999982 --- 999---------------------------------------------------注意这一段:
100000 * -0.009932=-993.2 --- -994
100000 * -0.009931=-993.1 --- -994
100000 * -0.00993=-993.00000000001 --- -994
100000 * -0.0099290000000001=-992.90000000001 --- -993
到这儿为什么不正常递增了?
显示的是-0.00993 结果却为-993.00000000001
遇到过这种情况没有?
请高人解说说明分析探讨……
这是基本的数学常识php 已经提供了高精度数学运算的扩展库,你却不去用
非要纠结这个不可能完成的事情
关键是服务器不支持高精度数学函数库,要用意味着重新编译安装PHP,暂停服务是代价!
有没有好的解决办法?
linux 直接 编译就行了 php源码包都自带的,整个过程不超过2分钟
win的话 直接修改php.ini 重启 不超过2分钟