Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP 7.1货币计算_Php_Laravel - Fatal编程技术网

PHP 7.1货币计算

PHP 7.1货币计算,php,laravel,Php,Laravel,我已经更新到PHP7.1,这个简单的计算现在返回为“遇到格式不正确的数值”错误 $balance = "-16,438.56"; $amount = "1000.00"; return $balance-$amount; 我需要知道如何管理这件事的帮助 谢谢您可以将其转换为浮点值 $balance = -16438.56; $amount = 1000.00; echo $balance-$amount; $ -17438.56 您需要从$balance中删除逗

我已经更新到PHP7.1,这个简单的计算现在返回为“遇到格式不正确的数值”错误

    $balance = "-16,438.56";
    $amount = "1000.00";

    return $balance-$amount;
我需要知道如何管理这件事的帮助
谢谢

您可以将其转换为浮点值

$balance = -16438.56;
$amount = 1000.00;

echo $balance-$amount;

$ -17438.56

您需要从$balance中删除逗号


$balance=“-16438.56”

您的余额中有逗号,因此首先删除逗号。如果您想确定,还可以键入hint

$balance = str_replace(',','',$balance);
return (float) $balance - (float) $amount;

php的
-
运算符可以隐式地将字符串转换为浮点数,但该转换与千步逗号不兼容,因此请去掉逗号,进行计算,并在计算后重新添加逗号,例如

$balance = "-16,438.56";
$amount = "1000.00";
return number_format ( (( float ) (str_replace ( ",", "", $balance ))) - (( float ) (str_replace ( ",", "", $amount ))), 2, ".", "," );

那两条都是线!这是一个例子,它是从输入中提取出来的,在以前的PHP版本中可以使用。我想说,
“-16438.56”
格式不正确,因为逗号。这会在使用逗号表示小数的区域设置中中断。@BartFriederichs然后您必须删除逗号进行计算,因为PHP的浮点类型与这些逗号不兼容,所以在计算后重新添加逗号,duh。我们有一个函数来做这个精确的事情,叫做number_format(),谢谢你,这似乎是可行的,其他的建议,比如(float)返回一个错误的计算。在PHPV7.1及以上版本中,这似乎有所改变。输出与您给出的确切输入永远不正确。请参考本文并查看所有包含的PHP版本。