Verificando a nova estrutura do banco de dados, vi que alguém alterou um campo de float para double. Querendo saber por quê, verifiquei a documentação do mysql, mas honestamente não entendi qual é a diferença.
Ambos representam números de ponto flutuante. A FLOATé para DOUBLEnúmeros de precisão simples, enquanto a é para números de precisão dupla.
O MySQL usa quatro bytes para valores de precisão simples e oito bytes para valores de precisão dupla.
Há uma grande diferença entre os números de ponto flutuante e os números decimais (numéricos), que você pode usar com o DECIMALtipo de dados. Isso é usado para armazenar valores de dados numéricos exatos, ao contrário de números de ponto flutuante, onde é importante preservar a precisão exata, por exemplo, com dados monetários.
Os flutuadores @Kailas são arredondados e os decimais não. O decimal (9,3) pode ser, por exemplo, 123456.789, ao passo que, se você tentar armazenar 123456.789, ele será inserido como 123456.0 como um ponto flutuante.
FLOAT armazena números de ponto flutuante com precisão de até oito casas e tem quatro bytes, enquanto DOUBLE armazena números de ponto flutuante com precisão de até 18 casas e tem oito bytes.
Respostas:
Ambos representam números de ponto flutuante. A
FLOAT
é paraDOUBLE
números de precisão simples, enquanto a é para números de precisão dupla.O MySQL usa quatro bytes para valores de precisão simples e oito bytes para valores de precisão dupla.
Há uma grande diferença entre os números de ponto flutuante e os números decimais (numéricos), que você pode usar com o
DECIMAL
tipo de dados. Isso é usado para armazenar valores de dados numéricos exatos, ao contrário de números de ponto flutuante, onde é importante preservar a precisão exata, por exemplo, com dados monetários.fonte
Talvez este exemplo possa explicar.
Temos uma mesa como esta:
Para a primeira diferença, tentamos inserir um registro com '1,2' para cada campo:
A tabela mostrando assim:
Veja a diferença?
Tentamos o próximo exemplo:
Hola! Podemos encontrar a diferença assim:
fonte
float(10, 2)
Os pares são como os flutuadores, exceto pelo fato de serem duas vezes maiores. Isso permite uma maior precisão.
fonte
Pensei em adicionar o meu próprio exemplo que me ajudou a ver a diferença com o valor
1.3
ao adicionar ou multiplicar com outrofloat
,decimal
edouble
.1.3
float ADICIONADO a1.3
de diferentes tipos:1.3
float MULTIPLICADO por1.3
de diferentes tipos:Isso está usando MySQL 6.7
Inquerir:
Criar tabela e inserir dados:
fonte
FLOAT armazena números de ponto flutuante com precisão de até oito casas e tem quatro bytes, enquanto DOUBLE armazena números de ponto flutuante com precisão de até 18 casas e tem oito bytes.
fonte
Float tem 32 bits (4 bytes) com precisão de 8 casas. Double tem 64 bits (8 bytes) com precisão de 16 casas.
Se precisar de mais precisão, use Double em vez de Float .
fonte