TransWikia.com

Float com precisão PHP

Stack Overflow em Português Asked by Fox.11 on February 4, 2021

Estou trazendo do banco de dados a soma dos valores e como resultado ele me retorna conforme o exemplo abaixo:

6.3285714285714

Gostaria de que ele ficasse dessa forma:

6.32

Já tentei o ceil() e o round(), mas ambos me retornaram para mais ou para menos. Tentei usar o substr($valor,0,4);, mas o problema é quando o valor fica:

6.328

Lembrando que o valor pode retornar também:

16.3285714285714

E acredito que o substr() não seria a solução. Como eu poderia resolver isso?

2 Answers

Eu acho que neste caso não teria que arredondar?

$valor = 6.3285714285714;
echo number_format(floatval($valor), 2, '.', '');

Agora se não quer arredondar é só fazer assim:

echo number_format(floor(($valor*100))/100, 2, '.', '');

Answered by Ivan Ferrer on February 4, 2021

De fato falta um função para truncar no PHP, fizeram uma no SO:

function truncate($val, $f = "0") {
    if(($p = strpos($val, '.')) !== false) {
        $val = floatval(substr($val, 0, $p + 1 + $f));
    }
    return $val;
}
echo truncate(6.3285714285714, 2);

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Answered by Maniero on February 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP