Number

Um conceito matemático usado para contar, medir e fazer outras coisas de matemáticas.

Declaração

O tipo Number é implementado como double. Veja como declarar um número:

a = 5              # declaração de número (imutável)
b: Number = 5      # mesmo efeito, com verificação de tipo
c: Number = a      # iniciando com o valor da entrada, também 5
d = 43.14          # com casas decimais

Para declarar uma entrada mutável, coloque o operador til antes:

~ a = 6  # entrada de número mutável
a += 1   # adiciona 1 a 'a', resultando em 7

Operações com números

Números aceitam várias operações:

  • == igual
  • != diferente
  • + soma
  • - subtração
  • * multiplicação
  • / divisão
  • % módulo
  • ** potência
  • < menor
  • <= menor ou igual
  • > maior
  • >= maior ou igual
  • & AND lógico
  • | OR lógico

Ressalvas

Para operações lógicas e controle de fluxo, lembre-se de que zero é considerado falso e um não-zero é considerado verdadeiro.

Para operadores de igualdade, embora 0 e null sejam avaliados como falsos, no FatScript eles não são iguais:

0 == null  # falso

Precisão

Embora a precisão aritmética de um IEEE 754 double seja maior, o fry utiliza truques de arredondamento para melhorar a legibilidade humana ao imprimir sequências longas de decimais como texto. Além disso, ele usa um epsilon de 1.0e-06 para comparações de 'igualdade' entre números.

Em 99,999% dos casos de uso, essa abordagem fornece tanto comparações mais convenientes quanto números com aparência mais natural:

# Epsilon de igualdade
x = 1.0e-06
x: Number = 0.000001

# Diferenças menores são tratadas como o "mesmo" número pela comparação
x == 0.0000015
Boolean: true  # a diferença de 0,0000005 é ignorada

Os números de ponto flutuante não são distribuídos uniformemente na reta numérica. Eles são densos em torno de 0 e, à medida que a magnitude aumenta, o 'delta' entre dois valores expressivos aumenta:

_____________________________________0_____________________________________
+infinity    |     |    |   |  |  | ||| |  |  |   |    |     |    -infinity

o maior inteiro contíguo é 9.007.199.254.740.992 ou 2^53

Ainda é possível ter números muito maiores, em torno de 10^308, que é:

100000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000

Tenha em mente que se você somar 1 a 10^308, não importa quantas vezes você o fizer, sempre resultará no mesmo valor! Você precisa adicionar pelo menos algo próximo a 10^293 em uma única operação para que seja considerado, pois os números precisam ser de ordens de magnitude semelhantes. Para lidar de maneira discreta com números que excedem 2^53 considere utilizar o tipo HugeInt.

Além disso, a palavra-chave infinity fornece uma representação clara e inequívoca de valores que se elevam aos reinos além dos maiores números expressáveis, aproximando-se da infinitude teórica.

Veja também

results matching ""

    No results matching ""