Não estou familiarizado com o PHP e fiz uma pergunta rápida.
Eu tenho 2 variáveis pricePerUnit
e InvoicedUnits
. Este é o código que os define para valores:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Se eu der a saída, obtenho os valores corretos. Vamos dizer 5000
unidades faturadas e 1.00
por preço.
Agora, preciso mostrar o valor total gasto. Quando eu multiplico esses dois juntos, não funciona (como esperado, são strings).
Mas não tenho ideia de como analisar / lançar / converter variáveis em PHP.
O que devo fazer?
VARCHAR>11
no comprimento .. não restringi exatamente o porquê ainda.Você quer que a não-localidade ciente
floatval
função :Exemplo:
fonte
(float)
a conversão no primeiro servidor para "," e no segundo para ","Bem, se o usuário escrever 1,00.000, floatvar mostrará erro. Assim -
Isso é muito mais confiável.
Uso:
fonte
$string=preg_replace("/[^0-9\.\-]/","",$string);
Lidar com marcação em floats não é uma tarefa trivial. Na notação inglesa / americana, você formata mil mais
46*10-2
:Mas na Alemanha você mudaria a vírgula e o ponto:
Isso torna muito difícil adivinhar o número certo em aplicativos multilíngues.
Eu sugiro fortemente o uso
Zend_Measure
do Zend Framework para esta tarefa. Este componente irá analisar a string para um valor flutuante pelo idioma do usuário.fonte
intl
extensão.Use esta função para converter um valor flutuante de qualquer tipo de estilo de texto:
Esta solução não depende de nenhuma configuração local. Assim, para entrada do usuário, os usuários podem digitar valores flutuantes da maneira que quiserem. Isso é muito útil, por exemplo, quando você tem um projeto que está apenas em inglês, mas pessoas de todo o mundo estão usando e podem não ter em mente que o projeto quer um ponto em vez de uma vírgula para valores flutuantes. Você poderia jogar javascript na mistura e buscar as configurações padrão do navegador, mas ainda assim muitas pessoas definem esses valores para inglês, mas ainda digitando 1,25 em vez de 1,25 (especialmente, mas não limitado à indústria de tradução, pesquisa e TI)
fonte
Eu estava tendo um problema com a maneira padrão de fazer isso:
Se não houver um número válido, o analisador não deve retornar um número, ele deve gerar um erro. (Esta é uma condição que estou tentando detectar em meu código, YMMV)
Para corrigir isso, fiz o seguinte:
Então, antes de continuar a processar a conversão, posso verificar e retornar um erro se não houver uma análise válida da string.
fonte
Se você precisa lidar com valores que não podem ser convertidos separadamente, você pode usar este método:
fonte
você pode seguir este link para saber mais sobre como converter uma string / número em número / float / decimal em PHP. AQUI ESTÁ O QUE ESTE LINK DIZ ...
Método 1: Usando a função number_format (). A função number_format () é usada para converter uma string em um número. Ele retorna o número formatado em caso de sucesso, caso contrário, dá E_WARNING em caso de falha.
Método 2: Usando a conversão de tipos: A conversão de tipos pode converter diretamente uma string em um tipo primitivo flutuante, duplo ou inteiro. Esta é a melhor maneira de converter uma string em um número sem nenhuma função.
Método 3: Usando as funções intval () e floatval (). As funções intval () e floatval () também podem ser usadas para converter a string em seus valores inteiros e float correspondentes, respectivamente.
Método 4: Adicionando 0 ou executando operações matemáticas. O número da string também pode ser convertido em um inteiro ou flutuante adicionando 0 com a string. Em PHP, executando operações matemáticas, a string é convertida em um inteiro ou float implicitamente.
fonte