2013-07-08 38 views
-5

在PHP中使用数学是否有任何规则。当我尝试做一些简单的数学运算时,我得到了一些数据。数学结果不准确PHP

下面是具体的脚本

  $profit = $quote_1 - $entry; 

以下是完整的脚本

if ($productCount > 0) { 
     // get all the product details 
     while($row = mysql_fetch_array($sql)){ 
      $id = $row["id"]; 
      $symbol = $row["symbol"]; 
      $sym = strtoupper($sym); 
      $entry = $row["entry"];  
      $exit = $row["exit"]; 
      $openclosed = $row["openclosed"];  
      $entrydate = $row["entrydate"]; 
      $profit = $quote_1 - $entry; 
      $color = "#000000"; 
      $positive = ""; 
      if ($profit >= 0){ 
           $color = "#00a900"; 
           $positive = "+"; 
          } 
      else if ($profit < 0){ 
           $color = "#ef3600"; 
           $positive = "";} 
      if(empty($symbol)) { 
           echo nothing; 
           } 
       else { 
        $open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv", "r"); 
        $quote = fread($open, 1000); 

        fclose($open); 

        $quote = str_replace("\"", "", $quote); 
        $quote = explode(",", $quote); 

        $quote_0 = ($quote[0]); 
        $quote_1 = ((float)$quote[1]); 
        $quote_2 = ($quote[2]); 
        $quote_3 = ($quote[3]); 
        $quote_4 = ((float)$quote[4]); 
        $quote_5 = ((float)$quote[5]); 
        $quote_6 = ((float)$quote[6]); 
        $quote_7 = ((float)$quote[7]); 
        $quote_8 = ((float)$quote[8]); 

        echo "<ul><li><div class='wrapPicks'> 
        <div class='symbolPicks'> 
        <div class='quoteTitle'>$quote_0</div> 
        </div> 
        <div class='bgPicks'> 
        <div class='quote'>Entry Price: $$entry</div> 
        <div class='quote'>Last trade: $$quote_1</div> 
        <!--<div class='quote'>Date: $quote_2</div>--> 
        <div class='quote'>Open P/L: <div class='bigGreen'><span style=\"color: $color\">$positive $$profit </span></div></div> 
        <!-- <div class='quote'>Change From Previous Close: $$quote_4</div>--> 
        <!--<div class='quote'>High: $$quote_6</div> 
        <div class='quote'>Low: $$quote_7</div> 
        <div class='quote'>Volume: $quote_8</div>--> 
        </div> 
        </div></li></ul>"; 
      } 

现在,这是我认为的是,雅虎的数据是未来作为一个字符串可能的,而且的一个片段可能一直在扔东西。我也不清楚我的MYSQL表必须是int还是VARCHAR可以接受?

+0

什么数学? PHP可以做数学就好。更像是,“我的代码有问题吗?”您正在使用变量变量,因此存在一个主要的错误来源。 –

+1

您可以确定浮点数的准确程度。无论如何,我发现你的问题太不清楚,无法给出答案。 – Jonast92

+0

我在这里看不到数学。你只是回应字符串,并将其中的一些投射到浮动。没有数学。 – meagar

回答

1

在行

$open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv", "r"); 

你需要替换实际的符号,而不是把它作为查询字符串。也许是这样的:

$open = fopen("http://quote.yahoo.com/d/quotes.csv?s=".$symbol."&f=sl1d1t1c1ohgv&e=.csv", "r"); 

连接符号将有所帮助。

如果你有一个无效的请求,你可能正在看垃圾。

另外 - 在您使用它进行任何数学计算之前,您需要提出此请求 - 换句话说,在使用该值计算利润之前,您必须计算quote_1

这是我所谈论的一个荒谬简化的版本。看看你是否明白这是为什么比你做了什么不同,如何找回“从这里到那里”:

<?php 
    $symbol = "GE"; 
    $entry = 23; 
    $open = fopen("http://quote.yahoo.com/d/quotes.csv?s=".$symbol."&f=sl1d1t1c1ohgv&e=.csv", "r"); 
    $quote = fread($open, 1000); 
    fclose($open); 
    $quote = str_replace("\"", "", $quote); 
    $quote = explode(",", $quote); 
    $lastPrice = (float)$quote[1]; 
    $profit = $lastPrice - $entry; 
    echo "current ".$symbol." quote: ".$lastPrice; 
    echo "; entry: ".$entry."; profit: ".$profit; 
?> 

您可以在http://www.floris.us/SO/stocks.php行动看到这一点。我没有试图让它变得漂亮 - 只是让数学正确。现在输出是

current GE quote: 23.32; entry: 23; profit: 0.32 

我希望这是有帮助的。

+0

嗨,谢谢,我没有收到任何无效的请求,但我仍然收到奇数回报。 quote_1来自数据库后,该符号是我从雅虎需要的。 –

+0

好的 - 但你不应该计算利润,直到你有一个有效的报价! – Floris

+0

我很困惑。有什么方法可以进入聊天? –