<commit_before>---
layout: post
title: Não confie em pontos flutuantes
description: "Não confie em pontos flutuantes"
modified: 2016-04-17T15:27:45-03:00
tags: [dinheiro, pontos flutuantes, unidade monetária]
image:
  url: https://s19.postimg.org/udlq97v8z/blog-post3.jpg
---
# Pontos flutuantes não são sempre confiáveis.

Quando estamos escrevendo um código para uma aplicação em produção, devemos
tomar muito cuidado com as linhas que digitamos. É muito importante que saibamos
utilizar corretamente os tipos de dados para que o resultado esperado
seja o que realmente desejamos, e não uma anomalia que pode acabar com seu projeto.

## Cadê meu dinheiro?
Suponha que estejamos escrevendo uma aplicação que lide com dinheiro. Não queremos
que os usuários do sistema percam dinheiro ao transferir ou receber valores,
não é mesmo? Isso seria um erro grave em nosso sistema.

Considere o seguinte cenário: você possui em sua carteira virtual **R$4,30**. Então, recebe **R$6,15** reais de seu pai e mais **R$1,85** de sua mãe. Vamos, inocentemente,
jogar esses valores em números reais (pontos flutuantes) e ver o que acontece:

_javascript:_

```javascript
var soma = 4.3 + 6.15 + 1.85;
console.log(soma);
//Resultado: 12.299999999999999
```

_python:_
<commit_msg>Updated post<commit_after>---
layout: post
title: Não confie muito em pontos flutuantes
description: "Não confie muito em pontos flutuantes"
modified: 2016-04-17T15:27:45-03:00
tags: [dinheiro, pontos flutuantes, unidade monetária]
image:
  url: https://s19.postimg.org/udlq97v8z/blog-post3.jpg
---
# Pontos flutuantes não são sempre confiáveis.

Quando estamos escrevendo um código para uma aplicação em produção, devemos
tomar muito cuidado com as linhas que digitamos. É muito importante que saibamos
utilizar corretamente os tipos de dados para que o resultado esperado
seja o que realmente desejamos, e não uma anomalia que pode acabar com seu projeto.

## Cadê meu dinheiro?
Suponha que estejamos escrevendo uma aplicação que lide com dinheiro. Não queremos
que os usuários do sistema percam dinheiro ao transferir ou receber valores,
não é mesmo? Isso seria um erro grave em nosso sistema.

Considere o seguinte cenário: você possui em sua carteira virtual **R$4,30**. Então, recebe **R$6,15** reais de seu pai e mais **R$1,85** de sua mãe. Vamos, inocentemente,
jogar esses valores em números reais (pontos flutuantes) e ver o que acontece:

_javascript:_

```javascript
var soma = 4.3 + 6.15 + 1.85;
console.log(soma);
//Resultado: 12.299999999999999
```

_python:_

{'fraction_non_alphanumeric': 0.07877116975187082, 'fraction_numerical': 0.04568727845608507, 'mean_word_length': 4.825688073394495, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2367091', 'n_tokens_mistral': 1012, 'n_tokens_neox': 911, 'n_words': 343}