首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 数组值的相加 [已结贴,结贴人:freescy2002]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 15:24:40 楼主
    <?
    $xs_zb=array(6.7,3,5.5,13.3,7.1,22.5,7,9.3,5.3,19.2,1.1);

    foreach($xs_zb as $tqq)
    {
        $tt+=$tqq;
    echo $tqq."====>".$tt." <br>";
        }
    echo $tt;
    if($tt==100){
    echo ("输出这个数");
    }
    ?>
    这个数组值相加明明是等于100,却不成立,不知道为什么,求助大家。
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 15:56:211楼 得分:0
    $tt是浮点型  100是整型
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 16:11:252楼 得分:0
    如果将$tt.强制转换成整型时,值为99,但是上面的这种情况,二种型不一样了,就是不知道如何来处理让
    if($tt==100){ 
    echo   ("输出这个数"); 
    } 来执行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaolei1982
    • 等级:
    发表于:2008-01-08 16:15:053楼 得分:0
    那就都转化为字符串比较
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 16:18:504楼 得分:0
    不能进行数字大小的比较吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 17:10:135楼 得分:0
    看来不好好念书是不行的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaolei1982
    • 等级:
    发表于:2008-01-08 22:14:396楼 得分:0
    我也是php的菜鸟,诚恳请教该如何处理?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 08:45:047楼 得分:0
    我看过手册说了,上面说了,尽量避免使用浮点数的比较,因为他给你的结果往往会出乎你的意料,但是问题我想想,咱应该也会遇到这种情况的吧,唠叨 老大是个强人啊,您能不能给我们这些小菜鸟指条道路呢。谢谢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 09:54:508楼 得分:25
    $xs_zb=array(6.7,3,5.5,13.3,7.1,22.5,7,9.3,5.3,19.2,1.1); 

    foreach($xs_zb   as   $tqq) 

            $tt+=$tqq; 
    echo   $tqq."====> ".$tt."  <br> "; 
            } 
    echo   $tt; 
    /******************************
    echo gettype($tt);
    echo gettype(100);
    ******************************/
    if($tt==100){ 
    echo   ("输出这个数"); 
    }

    你判断的时候可以用字符串判断,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaolei1982
    • 等级:
    发表于:2008-01-09 10:34:469楼 得分:0
    显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。 

    这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。 

    所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 11:26:5710楼 得分:10
    如果数组内数据如lz所描述的,所有小数点后只有一位,其实可以界定为定点运算。
    PHP code
    $xs_zb=array(6.7,3,5.5,13.3,7.1,22.5,7,9.3,5.3,19.2,1.1); foreach($xs_zb as $tqq) { $tt+=$tqq; echo $tqq."====> ".$tt." <br> "; } $tt = round($tt,2); if($tt==100.00){ echo ("output"); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 13:03:1811楼 得分:15
    浮点数标准比较方法:
    define('PRECISION', 0.000001);//精度
    if(abs($tt - 100)  < PRECISION)
    {
        //相等
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Thaiki
    • 等级:
    发表于:2008-01-09 13:21:1312楼 得分:0
    if(intval(ceil($tt))==100) 这样才对-_-#
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 15:47:3113楼 得分:0
    感谢楼上的各位,结帖
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved