2013-08-20 95 views
1

enter image description here從字符串變爲變量

嗨,大家好,這裏只需要一個小小的幫助。右邊的綠色數字是字符串。我如何將它們更改爲數字?另外我還需要它們是2位小數。我使用什麼功能?我嘗試了下面的方法,但輸出爲0.答案都歡迎。

$profitText = $profitText*1; 
$profitText = (float)$profitText; 
round($profitText,2); 
number_format($profitText, 2); 

EDITED 好男人這個變量的推導是非常複雜的。每一步都有它的功能目的,但是繼承了它的派生。在底部的最後一個profitText之後,我意識到這是一個字符串。爲什麼?我該如何解決它?

$offeropen=$row['offerprice'];//1.3334 
     $pips=$offerpricepl-$offeropen;//difference btw prices , eg. 0.0023 
     $closedb=$offerpricepl;// nothing 
     $pips1=round($pips, 6);// round to 6 decimal points 
     $pips2 = str_replace('.', '', $pips1);// remove decimal 
     if ($pips2<0) 
     { 
     $pips2 = str_replace('-', '', $pips2);// methodology for adjusting figures and negative values back 
     $pips2 = ltrim($pips2, '0'); 
     $pips2 = -1 * abs($pips2); 
     } 
     else { 
     $pips2 = ltrim($pips2, '0');// for triming 0 on the left 
     } 
     $pips3=$pips2/$minipipskiller;// methodology 
    $ticksize= "0.0001";// FOR PROFIT AND LOSS 
     $lot1 = "100000"; 
     $sizecalc=$row['size'] * $lot1; 

     if ($row['type']=="buy") 
     { 
     $profitandloss=$sizecalc*$ticksize*$pips3; //per TRADE 
     } 
     if ($row['type']=="sell") 
     { 
     $profitandloss=$sizecalc*$ticksize*$pips3; //per TRADE 
     } 

     $zero= '0'; 

     if($profitandloss<$zero) { 
      $profitText = "<div style=\"color: red;\">$profitandloss</div>"; 
     } elseif ($profitandloss>$zero) { 
      $profitText = "<div style=\"color: green;\">$profitandloss</div>"; 
     } 
     // for profit and loss counting 

     $profitText=ltrim($profitText,'0'); 
+1

您不一定需要將它們轉換爲數字 - 如果您在預期使用數字的位置使用字符串,它會將其轉換爲您的數字:http://www.php.net/manual /en/language.types.string.php#language.types.string.conversion – andrewsi

+0

看看這個..... http://stackoverflow.com/questions/2540078/convert-a-string-to-a-double-is-this-possible – user2366842

+0

嘗試使用(浮點數)$ numbemVar進行投射或讀取此http:// www .php.net/manual/en/function.number-format.php – PiLHA

回答

1

這是你的問題:

$profitText = "<div style=\"color: red;\">$profitandloss</div>"; 

你試圖把$profitText成數。它實際上是HTML的字符串,而PHP不能設法制定出什麼它應該用它做,所以當你將它轉換爲一個數字,它返回0。

解決方案:

使用$profitandloss代替

+0

意味着我只是使用profitandloss? – nigel

+0

好吧,看起來這是該列的內容來自哪裏,所以我認爲這是您使用的實際數字,而不是格式化版本。 – andrewsi

+0

這就是我看,感謝的人!我檢查了var dump,是的。 – nigel

0
$value = intval(floatval($profitText)*100)/100.0 
+0

我試過這個方法。它似乎仍然是一個字符串....並且輸出爲0 – nigel

+0

在執行* 1之前,嘗試使用orignal $ profitText。 – Jiminion

+0

編輯的代碼,審查的感謝 – nigel

0

我不認爲這$profitText = $profitText*1;會工作,除非你FIR st do $profitText = (float)$profitText;。請記住,您必須首先轉換字符串,然後才能進行任何操作。

floatval(混合$ VAR)也可以用來代替鑄字鑄字,但應該能正常

+0

編輯的代碼,審查的感謝 – nigel

1

這將一舉兩得要求分在一起:

$floatProfitVar = number_format($profit, 2, '.');

+0

編輯的代碼,審查的感謝 – nigel

1

您正在尋找的功能是sprintfprintf並已設計正是出於這個工作:

printf('%.2F', '1.8'); # prints "1.80" 

演示:https://eval.in/44078

您可以使用字符串輸入作爲浮點數參數(F = float,區域設置無關)以及整型或浮點型輸入。 PHP是鬆散的類型。

使用sprintf如果你想取回一個字符串,直接打印printf