1.8 Limitando a precisão
Arredondamento, truncamento, funções de piso e teto são métodos para escrever números com precisão limitada.
Arredondamento
Para arredondar um número para a \(k\)-ésima casa decimal, basta observar a \(k\)+1-ésima casa. Se a \(k\)+1-ésima casa decimal for 0, 1, 2, 3 ou 4, mantém-se a \(k\)-ésima casa decimal; se a \(k\)+1-ésima casa decimal for 5, 6, 7, 8 ou 9, soma-se 1 à \(k\)-ésima casa decimal.
Truncagem
Para truncar um número para a \(k\)-ésima casa decimal, basta eliminar a \(k\)+1-ésima casa decimal e suas subsequentes.
Piso e teto
Dados \(x,y \in \mathbb{R}\) e \(m,n \in \mathbb{Z}\), piso e teto podem ser definidos por
\[\begin{equation} \lfloor x \rfloor = \max \{m \in \mathbb{Z} \mid m \le x\} \tag{1.3} \end{equation}\]
\[\begin{equation} \lceil x \rceil = \min \{n \in \mathbb{Z} \mid n \ge x\} \tag{1.4} \end{equation}\]
Exemplo 1.7 Arredondamento e truncagem.
Decimais | Arredondamento | Truncagem |
---|---|---|
6 | 153.654321 | 153.654321 |
5 | 153.65432 | 153.65432 |
4 | 153.6543 | 153.6543 |
3 | 153.654 | 153.654 |
2 | 153.65 | 153.65 |
1 | 153.7 | 153.6 |
0 | 154 | 153 |
-1 | 150 | 150 |
-2 | 200 | 100 |
Piso e teto.
\(\lfloor 153.654321 \rfloor = 153\)
\(\lceil 153.654321 \rceil = 154\)
# Usando base R
options(digits = 10) # Ajustando para apresentação de 10 dígitos (padrão: 7)
for(i in 6:-2){ print(round(153.654321, dig = i)) } # 'digits' casas decimais
## [1] 153.654321
## [1] 153.65432
## [1] 153.6543
## [1] 153.654
## [1] 153.65
## [1] 153.7
## [1] 154
## [1] 150
## [1] 200
trunc <- function(x, ..., dig = 0) base::trunc(x*10^dig, ...)/10^dig # Aprimorando
for(i in 6:-2){ print(trunc(153.654321, dig = i)) } # Precisão de i casas decimais
## [1] 153.654321
## [1] 153.65432
## [1] 153.6543
## [1] 153.654
## [1] 153.65
## [1] 153.6
## [1] 153
## [1] 150
## [1] 100
## [1] 153
## [1] 154
## [1] 153.6543
## [1] 153.65
## [1] 154
## [1] 200