嗨,大家好,这里需要一点帮助。右边的绿色数字是字符串。如何将它们更改为数字?另外我还需要它们是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');
答案 0 :(得分:1)
我认为你需要
floatval(mixed var)
http://www.php.net/manual/en/function.floatval.php
$profit = round(floatval(trim($profitText)), 2);
答案 1 :(得分:1)
这将同时执行两个请求的点:
$floatProfitVar = number_format($profit, 2, '.');
答案 2 :(得分:1)
您正在寻找的功能是sprintf
或printf
,并且专为完成这项工作而设计:
printf('%.2F', '1.8'); # prints "1.80"
您可以将字符串输入用于float number参数(F = float,locale independent)以及整数或浮点输入。 PHP是松散的类型。
如果您想要取回字符串sprintf
,请使用printf
。
答案 3 :(得分:1)
这是你的问题:
$profitText = "<div style=\"color: red;\">$profitandloss</div>";
您正在尝试将$profitText
转换为数字。它实际上是一串HTML,并且PHP无法设法解决它应该用它做什么,因此当你将它转换为数字时,它返回0。
解决方案:
使用$profitandloss
代替
答案 4 :(得分:0)
$value = intval(floatval($profitText)*100)/100.0
答案 5 :(得分:0)
除非您先$profitText = $profitText*1;
,否则我认为此$profitText = (float)$profitText;
不起作用。请记住,在进行任何操作之前,必须先转换字符串。
floatval(混合$ var)也可以用来代替类型转换,但是类型转换应该可以正常工作