virgula em campo int

528 views
Skip to first unread message

Fabio Sanches

unread,
Dec 12, 2008, 6:33:15 PM12/12/08
to php-b...@googlegroups.com
ae pessoal. to com uma duvida q é a seguinte.. tenho uns campos no banco de dados q sao int, e tipo.. tenho um campo texto no codigo, e na hora de inserir gostaria tipo de inserir um  valor tipo 123,12  porem na hora q vai pro banco por ser apenas campo int ele so leva pro banco o valor anes da virgula 123  q q eu tenho q fazer aki..

--
Fábio & Michele - Te amo mto...

Ricardo Silveira

unread,
Dec 12, 2008, 6:47:16 PM12/12/08
to php-b...@googlegroups.com
como fazer no myssql eu não sei, mas vc pode usar number_format() para formatar o número
--
Ricardo Silveira

Fabio Sanches

unread,
Dec 12, 2008, 7:11:07 PM12/12/08
to php-b...@googlegroups.com
isso eu sei
mais é o seguinte eu nao consigo jogar com virgula pro banco nao

2008/12/12 Ricardo Silveira <srsil...@gmail.com>

Fábio Luciano

unread,
Dec 12, 2008, 7:24:45 PM12/12/08
to php-b...@googlegroups.com
Eu só não entendo por que você não altera o campo para float. Se o número pode ser float, coloque como float oras.

2008/12/12 Fabio Sanches <fabios...@gmail.com>

Jackson Ferreira de Andrade Mafra

unread,
Dec 12, 2008, 7:33:12 PM12/12/08
to php-b...@googlegroups.com
$x = 12,3;
$y = (int)$x;
$y = round($x);

2008/12/12 Fábio Luciano <0m3g...@gmail.com>



--
att.
Jackson F. de A. Mafra
Designer,Desenvolvedor e Consultor
http://www.jacksonfdam.com.br

Esta mensagem, incluindo seus anexos, pode conter informações confidenciais e/ou privilegiadas. Se você não for a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Caso esta mensagem tenha sido recebida por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida elimine-a do seu sistema. Agradeço sua cooperação.

Fabio Sanches

unread,
Dec 14, 2008, 9:07:54 AM12/14/08
to php-b...@googlegroups.com
camarada.. so tirando uma duvida.. eu fiz isso e inseri no banco o valor de $y porem no banco nao aparece o valor com virgula nao.. so aparece o valor antes da virgula.

2008/12/12 Jackson Ferreira de Andrade Mafra <jacks...@gmail.com>

Danilo Sgrott

unread,
Dec 14, 2008, 9:23:15 AM12/14/08
to php-b...@googlegroups.com
Eu concordo com o Fábio Luciano, se o campo pode ser float...pq não alterar o campo?
 
Abraços
 
Danilo Sgrott

Stephan A. de Souza

unread,
Dec 14, 2008, 4:12:46 PM12/14/08
to php-b...@googlegroups.com
Se ve pelo fato de o BD trabalhar no formato americano e o separador de decimal é ponto e não vírgula. ;)

$var = str_replace(',','.',$var);

Resolve teu caso

2008/12/14 Fabio Sanches <fabios...@gmail.com>



--
Stephan Alan de Souza
msn: bla...@hotmail.com
skype: stephan.desouza
Administrador HxBr.net
Forum/TeamSpeak Admin ragnaBR.net

Fábio Luciano

unread,
Dec 14, 2008, 6:04:49 PM12/14/08
to php-b...@googlegroups.com
Eu concordo com vocês quanto dizem que há milhares de formaw para se retornar um número com a vírgula. Mas o fato puro é ilógico. O campo é int, ele quer inserir float em int. Não resolveria só mudando o campo pra float?

2008/12/14 Stephan A. de Souza <bla...@gmail.com>

Fabio Sanches

unread,
Dec 14, 2008, 6:47:39 PM12/14/08
to php-b...@googlegroups.com
corretissimo.. mudei primeiro o campo para float.. depois vou ter q colocar o str_replace em todos.. hehe  mais pelo menos resolve o meu problema.. hehhe

2008/12/14 Stephan A. de Souza <bla...@gmail.com>
Se ve pelo fato de o BD trabalhar no formato americano e o separador de decimal é ponto e não vírgula. ;)

Walfredo

unread,
Dec 16, 2008, 11:29:35 AM12/16/08
to php-brasil
Estude primeiro sobre int depois você mesmo vai ver que int não aceita
vírgula só aceita ponto, e ponto!

Ou muda pra float ou então não resolve, faz uma GAMBIARRA(deve ser
lógico isto) para funcionar




On 14 dez, 20:04, "Fábio Luciano" <0m3g4...@gmail.com> wrote:
> Eu concordo com vocês quanto dizem que há milhares de formaw para se
> retornar um número com a vírgula. Mas o fato puro é ilógico. O campo é int,
> ele quer inserir float em int. Não resolveria só mudando o campo pra float?
>
> 2008/12/14 Stephan A. de Souza <bla...@gmail.com>
>
> > Se ve pelo fato de o BD trabalhar no formato americano e o separador de
> > decimal é ponto e não vírgula. ;)
>
> > $var = str_replace(',','.',$var);
>
> > Resolve teu caso
>
> > 2008/12/14 Fabio Sanches <fabiosanc...@gmail.com>
>
> >> camarada.. so tirando uma duvida.. eu fiz isso e inseri no banco o valor
> >> de $y porem no banco nao aparece o valor com virgula nao.. so aparece o
> >> valor antes da virgula.
>
> >> 2008/12/12 Jackson Ferreira de Andrade Mafra <jacksonf...@gmail.com>
>
> >>> $x = 12,3;
> >>> $y = (int)$x;
> >>> $y = round($x);
>
> >>> 2008/12/12 Fábio Luciano <0m3g4...@gmail.com>
>
> >>>> Eu só não entendo por que você não altera o campo para float. Se o
> >>>> número pode ser float, coloque como float oras.
>
> >>>> 2008/12/12 Fabio Sanches <fabiosanc...@gmail.com>
>
> >>>> isso eu sei
> >>>>> mais é o seguinte eu nao consigo jogar com virgula pro banco nao
>
> >>>>> 2008/12/12 Ricardo Silveira <srsilve...@gmail.com>

Maicon Rafael

unread,
Dec 16, 2008, 11:34:06 AM12/16/08
to php-b...@googlegroups.com
Walfredo


" Estude primeiro sobre int depois você mesmo vai ver que int não aceita
vírgula só aceita ponto, e ponto! "

-----------------------------

Aonde vc estudou que int aceita ponto ?





2008/12/16 Walfredo <sa.wa...@gmail.com>



--
Maicon Rafael

José Wilker

unread,
Dec 16, 2008, 12:03:57 PM12/16/08
to php-b...@googlegroups.com
bom, também não entendi o que quiserão dizer. mas segue abaixo uma explicação sobre os tipos de campos, é muito simples vamos lá:

#

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro muito pequeno. A faixa deste inteiro com sinal é de -128 até 127. A faixa sem sinal é de 0 até 255.

#

BIT, BOOL, BOOLEAN

Estes são sinônimos para TINYINT(1).

O sinônimo BOOLEAN foi adicionado na versão 4.1.0.

Um tipo boolean verdadeiro será introduzido de acordo com o SQL-99.
#

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro pequeno. A faixa do inteiro com sinal é de -32768 até 32767. A faixa sem sinal é de 0 a 65535.
#

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro de tamanho médio. A faica com sinal é de -8388608 a 8388607. A faixa sem sinal é de 0 to 16777215.
#

INT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro de tamanho normal. A faixa com sinal é de -2147483648 a 2147483647. A faixa sem sinal é de 0 a 4294967295.
#

INTEGER[(M)] [UNSIGNED] [ZEROFILL]

Este é um sinônimo para INT.
#

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

Um inteiro grande. A faixa com sinal é de -9223372036854775808 a 9223372036854775807. A faixa sem sinal é de 0 a 18446744073709551615.

Existem algumas coisas sobre campos BIGINT sobre as quias você deve estar ciente:

    *

      Todas as operações aritiméticas são feitas usando valores BIGINT ou DOUBLE com sinal, não devemos utilçizar inteiros sem sinal maiores que 9223372036854775807 (63 bits) exceto com funções ded bit! Se você fizer isto, alguns dos últimos digitos no resultado podem estar errados por causa de erros de arredondamento na conversão de BIGINT para DOUBLE.

      O MySQL 4.0 pode tratar BIGINT nos seguintes casos:
          o

            Usar inteiros para armazenar grandes valores sem sinais em uma coluna BIGINT.
          o

            Em MIN(big_int_column) e MAX(big_int_column).
          o

            Quando usar operadores (+, -, *, etc.) onde ambos os operandos são inteiros.
    *

      Você pode armazenar valores inteiro exatos em um campo BIGINT aramzenando-os como string, como ocorre nestes casos não haverá nenhuma representação intermediaria dupla.
    *

      '-', '+', e '*' serão utilizados em cálculos aritiméticos BIGINT quando ambos os argumentos forem valores do tipo INTEGER! Isto significa que se você multilicar dois inteiros grandes (ou obter resultados de funções que retornam inteiros) você pode obter resultados inesperados quando o resultado for maior que 9223372036854775807.

#

FLOAT(precisão) [UNSIGNED] [ZEROFILL]

Um número de ponto flutuante. Não pode ser sem sinal. precisão pode ser <=24 para um número de ponto flutuante de precisão simples e entre 25 e 53 para um número de ponto flutuante de dupla-precisão. Estes tipos são como os tipos FLOAT e DOUBLE descritos logo abaixo. FLOAT(X) tem o mesma faixa que os tipos correspondentes FLOAT e DOUBLE, mas o tamanho do display e número de casas decimais é indefinido.

Na versão 3.23 do MySQL, este é um verdadeiro valor de ponto flutuante. Em versões anteriores , FLOAT(precisão) sempre tem 2 casas decimais.

Note que o uso de FLOAT pode trazer alguns problemas inesperados como nos cálculos já que em MySQL todos são feitos com dupla-precisão. See Secção A.5.6, "Resolvendo Problemas Com Registros Não Encontrados".

Esta sintaxe é fornecida para comptibilidade com ODBC.

#

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

Um número de ponto flutuante pequeno (precisão simples). Os valores permitidos estão entre -3.402823466E+38 e -1.175494351E-38, 0 e entre 1.175494351E-38 e 3.402823466E+38. Se UNSIGNED for especificado, valores negativos não são permitidos O M é a largura do display e o D é o número de casas decimais. FLOAT sem um argumento ou FLOAT(X) onde X <=24 tende a um número de ponto flutuante de precisão simples.

#

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

Um número de ponto flutuante de tamanho normal (dupla-precisão). Valores permitidos estão entre -1.7976931348623157E+308 e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308. Se UNSIGNED for especificado, valores negativos não são permitidos. O M é a largura do display e o D é número de casa decimais. DOUBLE sem argumento ou FLOAT(X) onde 25 <= X <= 53 são números de ponto flutuante de dupla-precisão.

#

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

Estes são sinônimos para DOUBLE.
#

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

Um número de ponto flutuante não empacotado. Se comporta como um campo CHAR: ``não empacotado'' significa que o número é armazenado como uma string, usando um caracter para cada digito do valor. O ponto decimal e, para números negativos, o sinal de menos ('-'), não são contados em M (mas é reservado espaço para isto). Se D for 0, os valores não terão ponto decimal ou parte fracionária. A faixa máxima do valor DECIMAL é a mesma do DOUBLE, mas a faixa atual para um campo DECIMAL dado pode ser limitado pela escolha de M e D. Se UNSIGNED é especificado, valores negativos não são permitidos.

Se D não for definido será considerado como 0. Se M não for definido é considerado como 10.


---------------------

bom isso aê foi retirado da documentação do mysql. quando tiverem dúvidas referente a tal coisa, tentem utilizar o google para isso. ele é muito bom.

se quiser saber mais sobre banco de dados vou deixar um link abaixo.

http://dev.mysql.com/doc/refman/4.1/pt/column-types.html

ou pode ir em

www.misgood.com e pegar livros relacionados a php, mysql, java, c, cgi, c++, c#, asp, .net e etc...


bom é isso aê! abraço a todos




JW



2008/12/16 Maicon Rafael <mai...@gmail.com>



--
Você precisa de um lugar para armazenar seus arquivos de, fotos, documentos, videos, músicas entre outros, podendo compartilhar seus arquivos com seus amigos?
www.misgood.com - uma nova experiência em sua vida - 5GB Grátis!

blog pessoal: www.wilker.com.br =)

BIGBOSS - Unos nacen pa' líder otros pa' seguidor, El segundo es tu gran admirador!

Diego Pires

unread,
Dec 16, 2008, 12:13:17 PM12/16/08
to php-b...@googlegroups.com
Creio que ele não soube se expressar direito

Imagino que o ponto a que ele se refere, seja o separador de milhares. Exemplo (1.000 (mil))

Eu acho hehe

Diego Pires
diegopires.net


2008/12/16 Walfredo <sa.wa...@gmail.com>
Reply all
Reply to author
Forward
0 new messages