代码之家  ›  专栏  ›  技术社区  ›  acm

两个文件,完全相同的代码,不同的输出?

  •  1
  • acm  · 技术社区  · 15 年前

    这是最奇怪的事情,发生在我身上,因为我是一个(PHP)程序员。。。

    我有两个文件,代码如下(proj。返回不同的输出。

    <?php
    $numbers =<<<eot
    2,3
    5,2
    9,3
    4,9
    6,3
    10,5
    eot;
    $numbers = explode("\n",$numbers);
    $max = 0;
    foreach($numbers as $k => $n){
        list($base,$expo) = explode(',',$n);
        $theLog = log($base,10);
        $result = bcmul($theLog,$expo,10);
    
        if(bccomp($result,$max,10) == 1){
            echo '<br/>max so far is ' . $result . ' for base ' . $base . '[log:'.$theLog.'] and exponent ' . $expo ;
            $max = $result;
        }
    }
    echo '<pre>';
    print_r($numbers);
    echo '</pre>';
    echo $max;
    

    //预期输出:

    max so far is 0.9030899869 for base 2[log:0.30102999566398] and exponent 3
    max so far is 1.3979400086 for base 5[log:0.69897000433602] and exponent 2
    max so far is 2.8627275283 for base 9[log:0.95424250943932] and exponent 3
    max so far is 5.4185399219 for base 4[log:0.60205999132796] and exponent 9
    
    5.4185399219
    

    文件2,euler2.php //假输出:

    max so far is 5 for base 10[log:1] and exponent 5
    
    5
    

    我已经测试过了,可以看出在euler2.php中,是假的, $result = bcmul($theLog,$expo,10); 不喜欢 $theLog 作为一个浮动值 bcmul(0,$expo) = 0 $日志 但是,具有正确的值。

    为什么bc函数的行为会从一个文件改变到另一个文件?

    bcscale bcscale(10); 结果完全一样。

    2 回复  |  直到 14 年前
        1
  •  3
  •   SilentGhost    15 年前

    文件中有不同的EOL字符。我可以用Windows EOL来纠正你的错误( \r\n \n ).

        2
  •  2
  •   g t Omri Btian    15 年前

    但我不知道为什么会影响你的成绩。

    试着把它们分开(例如用 WinMerge

    使用 Notepad++ 您可以通过“格式”菜单轻松编辑编码和/或行尾。

    推荐文章