Você está aqui: Página Inicial Artigos Kankei DBM Divisão por Zero

Divisão por Zero

Como o KankeiScript se comporta quando ocorre divisão por zero.

Como o KankeiScript usa o engine do JScript da Microsoft (que é o mesmo processador de JavaScript do Internet Explorer), ele compartilha as mesmas características do JavaScript em relação à divisão por zero.

Executar uma instrução que efetue uma divisão por zero não causa erro de execução. Ao invés disso, você poderá receber um valor não numérico como resultado da divisão (como um NaN ou um Infinity).

Basicamente, a divisão de zero por zero irá resultar em um NaN (Not a Number) e a divisão de qualquer outro número por zero irá resultar em um Infinity. Para determinar se um valor é um NaN ou Infinity, existem as funções isNaN e isFinite.

Considere por exemplo o seguinte módulo tipo template: 

<%
WriteLine('10/2');
var a = 10/2;
WriteLine('Representação: ' + a);
WriteLine('isNaN........: ' + isNaN(a));
WriteLine('isFinite.....: ' + isFinite(a));
WriteLine();

WriteLine('0/0 => Indeterminado');
a = 0/0;
WriteLine('Representação: ' + a);
WriteLine('isNaN........: ' + isNaN(a));
WriteLine('isFinite.....: ' + isFinite(a));
WriteLine();

WriteLine('5/0 => +Infinito');
a = 5/0;
WriteLine('Representação: ' + a);
WriteLine('isNaN........: ' + isNaN(a));
WriteLine('isFinite.....: ' + isFinite(a));
WriteLine();

WriteLine('-5/0 => -Infinito');
a = -5/0;
WriteLine('Representação: ' + a);
WriteLine('isNaN........: ' + isNaN(a));
WriteLine('isFinite.....: ' + isFinite(a));
WriteLine();
%>

 Que, ao ser executado, irá resultar nisto:

10/2
Representação: 5
isNaN........: false
isFinite.....: true

0/0 => Indeterminado
Representação: NaN
isNaN........: true
isFinite.....: false

5/0 => +Infinito
Representação: Infinity
isNaN........: false
isFinite.....: false

-5/0 => -Infinito
Representação: -Infinity
isNaN........: false
isFinite.....: false

O ideal é sempre testar se o denominador é zero antes de fazer qualquer tipo de divisão, pois NaN e Infinity causam problemas ao serem passados para qualquer função do KankeiScript ou objeto do Kankei. O seguinte código, por exemplo, vai gerar um erro de execução com a mensagem "Overflow":

var a = 5/0;
WriteLine(ToLong(a)); // ToLong() é uma função do KankeiScript
                      // Passar pra ela um valor NaN ou Infinity resulta 
                      // em um erro de "Overflow"

 

Ações do documento
« Fevereiro 2012 »
Fevereiro
SeTeQuQuSeSaDo
12345
6789101112
13141516171819
20212223242526
272829
Acessar


Esqueceu sua senha?