string number_format
( float $number
[, int $decimals
] )
string number_format
( float $number
, int $decimals
, string $dec_point
, string $thousands_sep
)
Vendo a especificação do
www.php.net/number_format, de cara ja se ve o erro.
Para utilizar essa funcao, o valor tem que ser retornado no padrão inteiro, ou seja,vejo que voce especifica 0 na segunda opcao, ou seja, voce esta pedindo para converter o valor eliminando os decimais, mesmo que especifique a virgula para separador decimal e o ponto para separador de milhares.
Entenda que, para obter o resultado que pediu, tem que ficar algo do tipo
$pd->prod->vProd = 1250.50;
number_format($pd->prod->vProd, 2, ",", ".")
retornaria 1.250,00
assim como:
$pd->prod->vProd = 3100.80;
number_format($pd->prod->vProd, 3, ",", ".")
retornaria 3.100,800
Outro detalhe, essa função exije que tenha 2 opcoes, no caso ($valor, decimais) porem, se especificiar o separador de decimal, obrigatoriamente tem que especificar o separador de milhares.
Verifique se a variavel que voce esta querendo converter o valor não esta nula, quando voce coloca +0 voce faz que o resultado não seja nulo, e a funcao trabalha normalmente.
Serve como um aviso, pois voce deve estar usando o SQL erroneamente, inserindo valores, sem ser com o tipo de coluna especifico, que no caso seria o DECIMAL por exemplo DECIMAL(8,2) que armazena até 999999.99 (oito caracteres).
E para finalizar, to rodando o mesmo PHP, versão lancada a poucos dias, e roda normalmente sem problemas.
Abracao, qualquer coisa, pode me escrever diretamente,
att,
Giancarlo