FLOAT / DOUBLE (Ponto Flutuante)
💾 FLOAT: 4 Bytes | DOUBLE: 8 BytesNúmeros científicos aproximados de alta velocidade para sensores, física, estatística e telemetria.
FLOAT (precisão simples, 4 bytes) e DOUBLE (precisão dupla, 8 bytes) utilizam o padrão IEEE 754 de ponto flutuante binário. São processados diretamente pela unidade de ponto flutuante (FPU) do processador com extrema velocidade, mas são valores APROXIMADOS.
✅ Quando Usar (Casos Ideais)
- • Medições de sensores IoT (temperatura ambiente, umidade do ar, pressão atmosférica, velocidade do vento).
- • Métricas estatísticas aproximadas, pesos de algoritmos de Machine Learning ou gráficos científicos.
🚫 Quando NÃO Usar (Armadilhas)
- • PROIBIDO para valores financeiros, contábeis, preços ou saldos bancários (use `DECIMAL`).
- • Evite fazer `WHERE valor_float = 19.99` em SQL, pois a representação binária interna pode ser `19.989999771118164`.
📐 Como Configurar no DrawDB Abrir DrawDB ↗
DOUBLE ou FLOAT
DOUBLE PRECISION ou REAL
REAL
📋 Exemplos Reais de Colunas com DOUBLE:
CREATE TABLE leituras_sensor (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
sensor_id INT UNSIGNED NOT NULL,
temperatura_celsius FLOAT NOT NULL,
umidade_relativa FLOAT NOT NULL,
lido_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
<?php
declare(strict_types=1);
$temperatura = filter_var('24.65', FILTER_VALIDATE_FLOAT);
if ($temperatura === false) {
throw new InvalidArgumentException('Temperatura inválida.');
}
$stmt = $pdo->prepare('
INSERT INTO leituras_sensor (sensor_id, temperatura_celsius, umidade_relativa)
VALUES (:sensor_id, :temp, :umidade)
');
$stmt->bindValue(':sensor_id', 1, PDO::PARAM_INT);
$stmt->bindValue(':temp', (string) $temperatura, PDO::PARAM_STR);
$stmt->bindValue(':umidade', '62.5', PDO::PARAM_STR);
$stmt->execute();