O que acontece quando você multiplica qualquer coisa por zero
A regra é simples: todo número multiplicado por 0 dá zero. Isso vale para inteiros, decimais, frações, números negativos, complexos. Não tem exceção na aritmética básica. Mas o interessante não é a regra em si, e sim o que acontece quando você tenta aplicá-la em contextos reais, porque aí as coisas podem ficar confusas rapidamente.
Entendendo o porquê de todo numero multiplicado por 0 ser zero
Multiplicação é basicamente adição repetida. Três vezes cinco significa cinco mais cinco mais cinco. Se você pede zero vezes cinco, está pedindo para somar cinco zero vezes. Nada é somado. O resultado vazio de soma é zero. O mesmo vale para qualquer outro número. Zero grupos de qualquer coisa sempre resulta em nada. Na álgebra, isso também se prova com as propriedades fundamentais. A propriedade distributiva diz que a(b + c) = ab + ac. Se b for zero, temos a(0 + c) = a*0 + ac. Como 0 + c = c, o lado esquerdo é ac. Então ac = a*0 + ac. Subtraindo ac dos dois lados, chega-se em a*0 = 0. Vale para qualquer a. Sem ambiguidade.
Na programação, essa propriedade se aplica da mesma forma. Em Python, float('inf') * 0. Isso já era. O IEEE 754 define esse resultado como NaN. É o caso mais comum de armadilha que eu vejo em fóruns e em revisões de código. Fui pego por isso há alguns anos trabalhando em um sistema de cálculos financeiros. Tínhamos uma tabela com dados de clientes e uma coluna de taxa de desconto que vinha de uma fonte externa. Um cliente tinha a taxa marcada como null ou NA, e o pipeline transformava isso em NaN no pandas. Quando eu multiplicava o valor de venda por essa taxa NaN, o resultado era NaN em vez de 0. O problema é que NaN se propaga. Qualquer soma ou média que envolvesse esse resultado também virava NaN. Em poucos minutos, boa parte do relatório mensal estava podre.
A solução foi simples mas demorada para identificar. Usei fillna(0) na coluna de taxas antes de fazer qualquer multiplicação. Depois ajustei o pipeline para tratar valores ausentes como zero de desconto, o que fazia sentido semântico: se não há taxa informada, não há desconto. Isso eliminou os NaNs e o relatório ficou limpo. Levei cerca de três horas só para rastrear a origem do problema porque NaNs não geram erro, eles silenciosamente contaminam tudo.
Como aplicar essa operação na prática
No dia a dia, você usa isso o tempo todo sem perceber. Quando um produto tem zero unidades disponíveis, o faturamento daquela linha é zero. Quando uma porcentagem de comissão é zero, o cálculo final não muda. Quando você zera um campo num planilha e multiplica pela quantidade, o resultado Some tudo que é zero. A propriedade é confiável nesse sentido. Em spreadsheets, a fórmula =A1*0 retorna zero sempre que A1 contém um número. Se A1 estiver vazio, o Excel trata como zero também e o resultado continua sendo zero. Se A1 for texto, aí o Excel devolve um erro #VALOR!. Isso é importante porque mostra que a propriedade só se aplica a valores numéricos de verdade. Texto não obedece a regras matemáticas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Em linguagens de programação, o comportamento varia conforme o tipo. Em C e C++, int * 0 funciona normalmente. Float * 0.0 também, exceto pelas exceções do IEEE 754. Em JavaScript, '5' * 0 resulta em 0 porque o operador faz conversão implícita. ['', 5] * 0 gera NaN porque a conversão de array vazio falha de forma estranha. Python é mais rigoroso e lança TypeError se você tentar multiplicar str por int, exceto quando o int é zero, onde permite replicate-string behavior que some com zero vezes, resultando em string vazia. Confuso, mas documentado. O ponto que a maioria das pessoas perde é que a propriedade funciona perfeitamente em números finitos. Quando você entra no território de infinito, indeterminações e campos não numéricos, a coisa desand. Infinity * 0 não é definido. NaN * qualquer coisa é NaN. Null * 0 depende da linguagem. Esses são os casos onde a intuição falha.
Um insight contraintuitivo que vi muita gente errar é achar que zero vezes infinito deveria ser algo tangível, como zero ou infinito. Em análise real, isso é uma forma indeterminada. O limite de f(x)*g(x) quando f tende a zero e g tende a infinito depende das funções envolvidas. Pode ser zero, pode ser infinito, pode ser qualquer número real, ou pode nem existir. Por isso a indeterminação existe. Calcular limites com L'Hopital ou expandir séries resolve, mas simplesmente escrever 0 * inf = 0 é errado na maioria dos contextos analíticos. Outro detalhe que as pessoas não consideram é a precisão numérica. Em computação, floats têm alcance e precisão limitados. Multiplicar um número extremamente pequeno, como 1e-310, por zero ainda dá zero. O problema real aparece quando você tem operações encadeadas. Multiplicar por zero no meio de uma série de operações de ponto flutuante pode eliminar termos que, em teoria, importavam para o resultado final devido ao arredondamento. Em simulações físicas, isso pode causar perda de conservação de energia se uma força for zerada incorretamente em certos passos temporais. A correção é usar máscaras condicionais ou estruturar o código de forma que a multiplicação por zero só ocorra em variáveis que realmente devem ser descartadas, nunca em grandezas conservativas.
Quando essa propriedade não resolve seu problema
A regra de que todo numero multiplicado por 0 é zero não te ajuda em divisão por zero. Divisão é a operação inversa e aí a coisa quebra de vez. Cinco dividido por zero é indefinido. Zero dividido por zero é indeterminado. A propriedade da multiplicação não preenche essa lacuna. Também não te ajuda em comparações lógicas. Se você usa zero como false e quer fazer algum type checking ou validação de entrada, multiplicar por zero não valida nada. Você precisa de verificação explícita de tipo e de domínio. Em Python, isinstance(x, (int, float)) e not math.isnan(x) e not math.isinf(x) cobre os casos numéricos válidos. Em JavaScript, typeof x === 'number' && Number.isFinite(x) faz o trabalho equivalente.
Se o seu problema envolve dados faltantes em larga escala, como em análise de big data, confiar cegamente nessa propriedade pode mascarar problemas de qualidade. Recomendo tratar valores nulos antes de qualquer operação aritmética, seja preenchendo com zero, removendo linhas, ou usando técnicas de imputação. Multiplicar um DataFrame inteiros com NaN por zero já gera NaN em vez de zero no pandas, então a propriedade não se aplica automaticamente quando há ausência de dados. O workaround é sempre preencher NaNs antes, como eu fiz no exemplo financeiro acima. Se você está construindo uma calculadora ou uma engine de gráficos, certifique-se de lidar com os casos edge separadamente. Infinity * 0 deve retornar NaN e ser tratado como erro de domínio. Null * 0 deve retornar null ou zero dependendo da semântica do sistema. Text * 0 deve falhar com erro claro. Não deixe a multiplicação simplesmente ignorar esses casos e seguir em frente silenciosamente.
A propriedade de multiplicação por zero é uma das mais básicas da matemática, mas sua aplicação prática exige atenção aos tipos, aos limites numéricos e aos dados ausentes. Dominar isso evita horas debugando resultados que parecem corretos até você notar que metade do relatório virou NaN por causa de uma célula mal alimentada.