2
respostas

[Dúvida] Muitas casas decimais

Bom dia. Eu estava fazendo alguns exercícios e, durante a "codificação", surgiu uma dúvida.

Utilizei o código a seguir:

# Criando e testando um dicionário:

salarios = {1172: 1, 1644: 1, 2617: 1, 5130: 1,
            5532: 1, 6341: 1, 6650: 1, 7238: 1,
            7685: 1, 7782: 1, 7903: 1}

for valor in salarios:
  salarios[valor] = 0.1*valor

salarios

E o resultado:

{1172: 117.2,
 1644: 164.4,
 2617: 261.7,
 5130: 513.0,
 5532: 553.2,
 6341: 634.1,
 6650: 665.0,
 7238: 723.8000000000001,
 7685: 768.5,
 7782: 778.2,
 7903: 790.3000000000001}

Minha dúvida foi: por que, em alguns casos, a quantidade de casas decimais foi maior que em outras, se não há diferença na escrita?

Na hora de "printar" o resultado final eu utilizei o {.:2f}.format() e resolveu o problema, mas fiquei curioso pra entender a teoria. rs Alguém poderia me dar um pequeno help do porquê isso aconteceu?

Desde já, agradeço! Abraços para todos!

2 respostas

Olá, Bruno.

Pelo que aprendi, a estrutura do dicionário é composta por {chave : valor}. Pelo exercício que você está praticando (e me corrija se estiver errado), você desejava criar uma lista com a variação histórica de salários de uma pessoa, correto?

Se eu acertei o propósito que desejava alcançar, você cometeu 02 equívocos: 01) o Funcionário (1) é quem deve ser a chave, enquanto os salários são os valores. 02) Quando se deseja realizar alguma operação sobre estes salários, usando o laço for, a forma mais fácil e legível de realizar essas operações, é fazer da seguinte forma:

salários = {1 : 1172, 1 : 1644, 1 : 2617, 1 : 5130, 1 : 5532, 1 : 6341, 1 : 6650, 1 : 7238, 1 :7685, 1 : 7782, 1 : 7903}

for valor in salarios.values(): valor = 0.1*valor

salarios

A forma como fez, traz este resultado estranho pois, a operação está multiplicando as chaves e não os valores. Um erro ocorreria se as chaves fossem strings pois não é possível realizar alguma operação aritmética entre números e strings.

Espero ter ajudado!

Olá meu amigo. Desculpe-me a demora, tive que parar com essa parte dos estudos por um tempo.

Muitíssimo obrigado pela resposta, mas deixa eu tentar explicar melhor o que tentei fazer e o que houve:

Na verdade eu tinha criado um dicionário com os salários de diversos funcionários e o objetivo foi colocar suas chaves como o salário atual e os valores seriam 10% do salário. O objetivo era olhar o salário de cada um e, ao lado, 10% do salário.

Por isso coloquei inicialmente os valores como 1, por ser o elemento neutro da multiplicação e, daí, pedi para o programa multiplicar cada valor por 0,1.

Agradeço pela dica de normalmente utilizar "string" para as chaves!

Mas a minha grande dúvida era saber o porquê de somente 2 valores terem apresentado diversas casas decimais. Teria alguma ideia? Desde já, agradeço a todos! Fortes abraços!!