Junyor_07 0 Denunciar post Postado Março 26, 2010 Olá pessual, tenho uma duvida sobre formatação de moeda, estou ussando number_format($valor, 2, ',', '.') para formatar os valores, até ai tudo certo. Gostaria de saber pq quando os valores tem casa decimal separado por virgula tipo 982,45 ele autera para 982,00 quando deveria deixar da mesma forma que esta. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_xp 0 Denunciar post Postado Março 26, 2010 ????? Posta o código. Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 Hum, os valores já estavam separados por virgula antes do number_format ser executado??Porque para dar certo, os valores decimais devem ser separados por ponto e não vírgula...assim o number_format substitui o valor por vírgula... $number = "1.5"; // Leia-se um e meio (ou um vírgula cinco). echo "R$" .number_format($number, 2, ',', '.'); deu certinho aqui... Compartilhar este post Link para o post Compartilhar em outros sites
Junyor_07 0 Denunciar post Postado Março 26, 2010 Eu to trazendo esses valores do banco, não to inserindo eles, tem valor que o cliente gravo sem casa decimal desta forma 588. tem valor que ele gravo desta forma 588,2 e tem valor que ele gravo da forma corre ta com duas casas decimais 588,50. preciso formata para ficar uma visualização correta. To fazendo assim <td class="estilocelulaconteudo1"><?php echo number_format($k[2], 2, ',', '.'); ?></td>. Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 bem, tá completamente errado então, os valores do banco não poderiam ser separados por vírgula diretamente, bem como o number_format não vai resolver esse tipo de coisa...você deveria colocar o campo do banco como decimal e aceitar apenas o formato "numero.2casas decimais" (EX: 45.69). Assim ele exibiria 45,69 na tela, ao se fazer o number_format. Compartilhar este post Link para o post Compartilhar em outros sites
Junyor_07 0 Denunciar post Postado Março 26, 2010 Pois é o ocorreto seria ele gravar com 2 casas decimais no banco, mas o cara que desenvolveu o sistema não fez isso. tem alguma coisa que posso fazer para exibir esses valores formatados. Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 Se não tem um padrão pros valores colocados, fica complicado... bem, faça replace em todas as vírgulas e coloque ponto. De preferência atualize isso no banco. $valor=str_replace(",",".",$valor); Mude o campo no banco de dados para decimal(10,2)... ele deve estar como varchar(algum_numero). Bem...arrumando esse caso de vírgula no banco de dados, não tem porque o number_format não funcionar... Talvez nos registros com ponto mas sem nenhum valor depois, mas mesmo eles creio que o numer_format vá exibir tipo: 42,00 vê aí :) Compartilhar este post Link para o post Compartilhar em outros sites
Junyor_07 0 Denunciar post Postado Março 26, 2010 Não posso alterar o banco pq esta num servidor remoto não tenho acesso, só tenho acesso aos valores salvo neste banco. vou tentar desta forma que você me passou.. Compartilhar este post Link para o post Compartilhar em outros sites
Junyor_07 0 Denunciar post Postado Março 26, 2010 Resolvi Vlw cristiadu pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 Deu certo da forma que te falei?? Compartilhar este post Link para o post Compartilhar em outros sites
Junyor_07 0 Denunciar post Postado Março 26, 2010 peguei os valores que estavão vindo do banco e alterei a virgula por ponto e depois chamei a função number_format. fico assim. troquei virgula por ponto. <? $valor = str_replace(",",".",$k[2]); ?> formatei os valores na hora de exibir <?php echo number_format($valor, 2, ',', '.'); ?> Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 é, foi o que te falei :) Compartilhar este post Link para o post Compartilhar em outros sites