if(array_sum($request->amount) <> 0)
{
session()->flash('sum_error','sum_error');
return back();
}
else
return array_sum($request->amount);
все работает нормально с числами, как это
1
2
2
3
5
7
12
36
но когда числа в $ request-> sum будут такими
278.75
35.96
-203
-13.92
-97.79
у меня длинные номера
-2.8421709430404E-14
как я могу позволить array_sum дать мне нулевой результат на этих значениях
Спасибо
Используйте sprintf для преобразования экспоненциальных форматов в нужные.
$sum = array_sum($request->amount);
$sum = sprintf('%f', $sum);
// or (if you want to limit the number of fractional digits to lets say 6
$sum = sprintf('%.6f', $sum);
// or use number_format function
$sum = number_format($sum,5);
if($sum <> 0)
{
session()->flash('sum_error','sum_error');
return back();
}
else
return $sum;
Вы можете преобразовать сумму массива в целое число, которое даст нулевой результат для экспоненциального значения.
Попробуйте следующее решение:
if((int) array_sum($request->amount) <> 0)
{
session()->flash('sum_error','sum_error');
return back();
}
else
return (int) array_sum($request->amount);
У меня есть простое приведение к целочисленному значению