ggg 1 Denunciar post Postado Outubro 22, 2010 A idéia é formatar um determinado valor retornando as casas decimais, se houver, sem arredondá-las (ao contrário da função "number_format()" que arredonda as casas decimais). Explicando: $var = 100.199; //Deve mostrar "100.19" e não "100.20" //Uma forma simples seria: $var = intval($var * 100) / 100; //No caso de "100.199" resultaria corretamente "100.19" OU $var = (int)($var * 100) / 100; //No caso de "100.199" também resultaria corretamente "100.19" ***Porém acredito que exista algum tipo bug na função "inval(var)" e na conversão "(int)var", pois ao colocarmos por exemplo o valor "1305.6" resulta "1305.59" e não "1305.6", o que seria um valor incorreto. Para observar acessem: Temporariamente Disponível "Como sou iniciante, podem desconsiderar este tópico caso seja irrelevante, a intenção é ajudar!" []s Desculpe minha ignorância e também pelo flood, mas gostaria de saber por que este tópico foi movido? []s Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Outubro 25, 2010 Utilize a função floatval amigo. Ou aumente as casas decimais do number_format <?php echo '<pre>'; $number = 100.199; $numbers[] = floatval($number); $numbers[] = number_format($number,3,',','.'); var_dump($numbers); ?>Veja este exemplo e vai entender como funciona cada um. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
ggg 1 Denunciar post Postado Janeiro 16, 2011 Conheço estas funções, porém não respondeu igual a questão. Compartilhar este post Link para o post Compartilhar em outros sites
ggg 1 Denunciar post Postado Janeiro 18, 2011 Resolução: 1ª Forma - Convertendo valores para string $valor = 100.19999999; //Para um resultado correto deve-se considerar o limite de 11 casas após a vírgula na dízima) $valor = intval(strval($valor * 100)) / 100; echo $valor; //Exibe "100.19" (String) 2ª Forma - Utilizando a extensão BC $valor = 100.19999999; //Para um resultado correto deve-se considerar o limite de 11 casas após a vírgula na dízima) $valor = bcmul($valor, '100', 2); //Multiplicação - Parâmetros[valor, multiplicador, casas decimais] $valor = bcdiv($valor, '100', 2); //Divisão - Parâmetros[valor, divisor, casas decimais] echo $valor; //Exibe "100.19" (String) OBS: - Mais informações sobre variáveis float Clique aqui *Aos Moderadores: Favor editar o título para "Resolvido", obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Nyl Guedes 0 Denunciar post Postado Maio 31, 2016 Alguém poderia me ajudar numa questão por favor ? Como ão sou expert em php, estou com um problema para resolver. Preciso que meu carrinho ao atualizar não arredonde o valor da quantidade. Sempre que atualizo ele arredonda o valor. Por exemplo se coloco 2,58 ele arredonda para 2,00. Gostaria que ele pegasse o valor de 2,58 * o valor do produto. <?php if(count($_SESSION['carrinho']) == 0 ) { echo '<tr><td colspan="5">Não há produto selecionado</td></tr>'; }else{ require("conn.php"); $total = 0; foreach($_SESSION['carrinho'] as $id => $qtd){ $sql = "SELECT * FROM produtos WHERE id= '$id'"; $qr = mysql_query($sql) or die(mysql_error()); $ln = mysql_fetch_assoc($qr); $pesometro =$ln['pesometro']; $nome = $ln['nome']; $preco = number_format($ln['preco'], 2 , ',', '.'); $pesometro = number_format($ln['pesometro'], '2' , ',', '.'); $subtotal = number_format($ln['preco'] * $qtd,2, ',', '.'); $pesosub = number_format($ln['pesometro'] * $qtd, '2' , ',', '.'); $valortotal += $ln['preco'] * $qtd; $pesototal += $ln['pesometro'] * $qtd; $mtotal += $ln['qtd'] + $qtd; if ($pesototal <= 500) { $vfrete = '60,00'; } elseif ($pesototal > 500) { $vfrete = '70,00'; } else { $total = $total; } echo '<tr> <td><input type="text" size="3" name="descricao" value="'.$nome.' " id="descricao" readonly </td> <td><center><input type="text" size="3" name="prod['.$id.']" value="'.$qtd = number_format($qtd,2, ',', '.'). '" " id="qtd" /></center></td> <td><center><input type="text" size="3" value=" '.$preco.'"id="preçosub" readonly </center></td> <td><center><input type="text" size="3" value=" '.$pesosub.'"id="pesosub" readonly </center></td> <td><center><input type="text" size="3" value=" '.$subtotal.'" id="subtotal" readonly </center></td> <td><a href="?acao=del&id='.$id.'" readonly ><center><img src="trash.png" width="14" height="16" alt="Deletar" /></center></a></td> </tr> <br>'; } $valortotal = $valortotal + $vfrete; $valortotal = number_format($valortotal, 2, ',', '.'); $pesototal = number_format($pesototal, 2, ',', '.'); $mtotal = number_format($mtotal, 2, ',', '.'); echo '<td> <td> <td> <td></BR>Valor do Frete..........................:<td><hr> <center><input type="text" size="3" value=" R$ '.$vfrete.'" id="subtotal" readonly </center><br></td><tr><td><td> <br><input type="text" size="3" value=" Metragem total m² : '.$mtotal.' " " id="total" readonly </center><td><td> <br><input type="text" size="3" value=" Peso total: '.$pesototal.'" " id="pesototal" readonly </center><td> <br><input type="text" size="3" value=" Valor total: R$ '.$valortotal.'" " id="total" readonly </center><td></tr> <tr>'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 31, 2016 @Nyl Guedes, Bem-vindo ao fórum! :)Recomendo que leia as regras e orientações de participação Crie um novo tópico para sua dúvida PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/ Compartilhar este post Link para o post Compartilhar em outros sites