Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando divido 0 por um número negativo, o resultado mostrado é -0.
Como faço para resolver esse problema.
Eu não entendi.
Você não especificou qual tipo de dados você está usando, inteiro ou ponto flutuante.
O que te faz pensar que isso é um erro? Por que é um problema?
Por que não existe -0.
Mas é claro que existe.
No padrão IEEE 754, -0 pode resultar de operações como a divisão de uma constante pequena por outra constante grande de sinal oposto, ou de uma constante qualquer por infinito de sinal oposto. De forma geral, representa qualquer valor negativo muito pequeno e próximo de 0.
Isto também é discutido na definição da linguagem em diversos trechos, incluindo 6.2.6.2p2, 6.2.6.2p3 e o rodapé 276, que diz:
>
The results of all floating conversions of a negative zero, and of negative values that round to zero, include a minus sign.
Não, que eu saiba, na matemática.
Não é porque é padrão que não pode ser alterado.
Um padrão nunca é alterado. Se for alterado, não é mais aquele padrão.
Na matemática, uma constante dividida por infinito (positivo ou negativo) tem valor 0. O que seria diferente é que uma constante muito grande dividindo outra relativamente pequena tem resultado diferente de 0, potencialmente negativo, dependendo do sinal dos operandos. Como a aritimética de ponto flutuante trabalha com quantidade de memória fixa, diversos valores não podem ser representados (por exemplo, 0.1 + 0.2 != 0.3), e adota-se, também, 0 ou -0 como resultado nesses casos.
Ainda assim, o autor do tópico não explicou por quê é problema que o resultado seja -0.
Como nunca? Imagino que você não entendeu o que estou dizendo. Basta um pequeno esforço para alterar um padrão.
Talvez tenha-me expressado mal, um padrão pode ser suprimido, seus resultados alterados.
O que te faz pensar que isso é um erro? Por que é um problema?