Ошибка сложить 2 значения в php [дубликат]


у Меня есть это значение: 250,59 и тот, другой, значение: 20,19, когда мы оба,не это вычисление и возвращает копеек: 270

Ниже мой расчет:

$mo = $vl_mobra ; //VALOR 1 250,59
$mt = $vl_mat;    //VALOR 2 20,19
$vt = $mo + $mt;  //SOMA

, Посмотрите на несколько примеров:

20.000,66  //VALOR 1
10.000,99  //VALOR 2
30         // TOTAL

500,99    //VALOR 1
100,88    //VALOR 2
600       //TOTAL

function moedaPhp($str_num){
    $vt = str_replace('.', '', $str_num);
    $vt = str_replace(',', '.', $vt);
    return $vt;
}

echo moedaPhp($vt); 
Author: Chefe Druida, 2016-09-26

2 answers

Это вопрос повторил.

Десятичными числами в PHP разделяются . (точки), и нет никаких разделителей тысяч.

<?php
function moedaPhp($str_num){
    $resultado = str_replace('.', '', $str_num); // remove o ponto
    $resultado = str_replace(',', '.', $resultado); // substitui a vírgula por ponto
    return floatval($resultado); // transforma a saída em FLOAT
}

$mo = $vl_mobra ; //VALOR 1 250,59
$mt = $vl_mat;    //VALOR 2 20,19
$vt = moedaPhp($mo) + moedaPhp($mt);  //SOMA
echo $vt; // retorna: 270.78

См. мой ответ: https://pt.stackoverflow.com/a/152534/31016

 1
Author: Allan Andrade, 2017-04-13 12:59:31

Используйте точку для десятичных знаков и не разделяйте тысячи.

$vl_mobra = 1250.59;
$vl_mat = 2020.19;

$mo = $vl_mobra ; //VALOR 1 250,59
$mt = $vl_mat;    //VALOR 2 20,19
$vt = $mo + $mt;  //SOMA

echo $vt;
 2
Author: Carlos Fagiani Jr, 2016-09-26 19:37:14