JavaRush /Blogue Java /Random-PT /Um pouco mais aprofundado sobre os números BigDecimal
grishin
Nível 27
Харьков

Um pouco mais aprofundado sobre os números BigDecimal

Publicado no grupo Random-PT
Finalmente, após uma pausa de 3 meses, estou voltando a fazer o curso. Fiz uma pausa no início de janeiro. Decidi então passar a estudar outras disciplinas, como HTML/CSS/Javascript. Ao longo do caminho, comecei a aprender tecnologias (servlets e JSP). Naquela época, eu tinha completado 24 níveis e estava um pouco preso nas aulas internas - não que nada não estivesse claro, só que o conhecimento adquirido precisava ser sistematizado, pois muito dele havia sido adquirido em pouco tempo no modo “galope pela Europa”. Então, agora decidi ler cuidadosamente o primeiro volume de Horstman para consolidar meu conhecimento do Java Core e ao mesmo tempo completar as tarefas restantes dos níveis anteriores, e depois passar pelos níveis. Comecei com o problema do bônus do nível 15 sobre fatorial. Tendo lidado com isso, decidi dar uma olhada mais profunda na classe BigDecimal. Não encontrei nenhum artigo particularmente popular na internet, então olhei a documentação e o primeiro parágrafo imediatamente me fez pensar, de alguma forma, nem tudo estava claro. Resolvi descobrir a verdade, e para que meu trabalho não fosse em vão, formatei tudo em forma de artigo e agora estou postando na comunidade para troca de opiniões, e talvez aconteça ser útil para alguém. Então peguei o primeiro parágrafo e o dividi em frases. Existem apenas 5 frases nele. As frases 3 e 4 foram sublinhadas e movidas para o final do parágrafo (por que fiz isso - continue lendo). E a tradução foi feita de acordo com esta ordem alterada. Primeiro parágrafo original
  1. Números decimais assinados imutáveis ​​e de precisão arbitrária.
  2. Um BigDecimal consiste em um valor inteiro sem escala de precisão arbitrária e uma escala inteira de 32 bits.
  3. Se for zero ou positivo, a escala será o número de dígitos à direita da vírgula decimal.
  4. Se for negativo, o valor sem escala do número é multiplicado por dez elevado à potência da negação da escala.
  5. O valor do número representado pelo BigDecimal é, portanto, ( unscaledValue × 10 -scale ).
Original com ordem de frase reorganizada
  1. Números decimais assinados imutáveis ​​e de precisão arbitrária.
  2. Um BigDecimal consiste em um valor inteiro sem escala de precisão arbitrária e uma escala inteira de 32 bits.
  3. O valor do número representado pelo BigDecimal é, portanto, ( unscaledValue × 10 -scale ).
  4. Se for zero ou positivo, a escala será o número de dígitos à direita da vírgula decimal.
  5. Se for negativo, o valor sem escala do número é multiplicado por dez elevado à potência da negação da escala.
Tradução expandida (cada ponto da tradução corresponde a um ponto do original)
  1. Esses são números decimais fracionários imutáveis ​​​​de 1 com sinal 2 , de comprimento arbitrário 34 .
  2. O número BigDecimal é especificado por dois parâmetros. O primeiro deles, o chamado. o valor não escalado é um número inteiro de comprimento ilimitado. Conhecendo apenas este parâmetro, não se pode dizer nada sobre o valor real do número BigDecimal. Para fazer isso, você precisa conhecer o segundo parâmetro - um número inteiro de 32 bits chamado escala.
  3. Então o valor do número BigDecimal pode ser calculado usando a seguinte fórmula: unscaledValue × 10 -scale
  4. Se BigDecimal for zero ou positivo, a escala será o número de dígitos após a vírgula decimal.
  5. Se BigDecimal for negativo, seu valor sem escala será multiplicado por 10 elevado a uma potência igual à escala com um sinal de menos.
Notas de Tradução
1. Fracionário, porque “precisão arbitrária” inclui, entre outras coisas,
   que estes são números exatos, e os números exatos devem ter um ponto decimal,
   em outras palavras - fracionário.
2. Isso é pode ser tanto positivo quanto negativo.
3. Duração arbitrária, porque “precisão arbitrária” também significa
   "Um número arbitrário de dígitos."
4. Na verdade, os números BigDecimal são números reais. Mas instalando
   configurações diferentes, você pode usá-las não apenas em cálculos científicos,
   e também nas financeiras.
Então, as frases sublinhadas foram o principal fator de confusão para mim - na verdade, eu apenas as retiraria do texto, porque na verdade são sobre a mesma coisa e, além disso, são sobre a mesma coisa que é dita na frase número 5. Aqueles. três sentenças seguidas dizem apenas que o valor sem escala é multiplicado por 10 elevado a uma potência igual à escala com um sinal de menos. Isso é confuso quando você lê pela primeira vez, porque ao ler a frase número 3, você entende que como existe se, significa que haverá uma coisa aqui, e na próxima frase outra coisa. Mas não, ambas as frases dizem a mesma coisa, apenas com palavras diferentes. Bem, a terceira (última frase do parágrafo) consecutiva sobre a mesma coisa é provavelmente como um tiro de controle. Não está claro por que o texto foi compilado de forma tão confusa, porque a fórmula unscaledValue × 10 -scale da última frase dá a definição de um grande número da forma mais clara, inequívoca e abrangente possível.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION