JavaRush /Blog Java /Random-ES /Un poco más profundo sobre los números BigDecimal
grishin
Nivel 27
Харьков

Un poco más profundo sobre los números BigDecimal

Publicado en el grupo Random-ES
Finalmente, después de un descanso de 3 meses, vuelvo a realizar el curso. Me tomé un descanso a principios de enero. Entonces decidí pasar a estudiar otras disciplinas, como HTML/CSS/Javascript. En el camino, comencé a aprender tecnologías (servlets y JSP). En ese momento había completado 24 niveles y estaba un poco estancado en las clases internas; no es que nada no estuviera claro, simplemente era necesario sistematizar los conocimientos adquiridos, ya que se habían adquirido demasiados en poco tiempo. en el modo “galopar por Europa”. Entonces, ahora decidí leer cuidadosamente el primer volumen de Horstman para consolidar mis conocimientos de Java Core y al mismo tiempo completar las tareas restantes de los niveles anteriores, y luego avanzar de nivel. Empecé con el problema de bonificación del nivel 15 sobre factorial. Habiendo resuelto esto, decidí echar un vistazo más profundo a la clase BigDecimal. No encontré ningún artículo particularmente popular en Internet, así que miré la documentación y el primer párrafo inmediatamente me hizo pensar que de alguna manera no todo estaba claro. Decidí llegar al fondo de la verdad, y para que mi trabajo no fuera en vano, formateé todo en forma de artículo y ahora lo publico en la comunidad para el intercambio de opiniones, y tal vez así sea. ser de ayuda para alguien. Entonces tomé el primer párrafo y lo dividí en oraciones. Sólo tiene 5 frases. Las oraciones número 3 y 4 se subrayaron y se trasladaron al final del párrafo (por qué hice esto; siga leyendo). Y la traducción se hizo en consecuencia en este orden cambiado. Primer párrafo original
  1. Números decimales con signo, inmutables y de precisión arbitraria.
  2. Un BigDecimal consta de un valor entero sin escala de precisión arbitraria y una escala de entero de 32 bits.
  3. Si es cero o positivo, la escala es el número de dígitos a la derecha del punto decimal.
  4. Si es negativo, el valor sin escala del número se multiplica por diez elevado a la potencia de la negación de la escala.
  5. Por lo tanto, el valor del número representado por BigDecimal es ( unscaledValue × 10 -scale ).
Original con orden de oración reordenado
  1. Números decimales con signo, inmutables y de precisión arbitraria.
  2. Un BigDecimal consta de un valor entero sin escala de precisión arbitraria y una escala de entero de 32 bits.
  3. Por lo tanto, el valor del número representado por BigDecimal es ( unscaledValue × 10 -scale ).
  4. Si es cero o positivo, la escala es el número de dígitos a la derecha del punto decimal.
  5. Si es negativo, el valor sin escala del número se multiplica por diez elevado a la potencia de la negación de la escala.
Traducción ampliada (cada punto de la traducción corresponde a un punto del original)
  1. Estos son números decimales fraccionarios 1 inmutables con signo 2 , de longitud arbitraria 34 .
  2. El número BigDecimal se especifica mediante dos parámetros. El primero de ellos, el llamado. El valor sin escala es un número entero de longitud ilimitada. Conociendo sólo este parámetro, no se puede decir nada sobre el valor real del número BigDecimal. Para hacer esto, necesita conocer el segundo parámetro: un número entero de 32 bits llamado escala.
  3. Luego, el valor del número BigDecimal se puede calcular usando la siguiente fórmula: valor sin escala × 10 -escala
  4. Si BigDecimal es cero o positivo, la escala es el número de dígitos después del punto decimal.
  5. Si BigDecimal es negativo, su valor sin escala se multiplica por 10 elevado a una potencia igual a la escala con un signo menos.
Notas de traducción
1. Fraccionado, porque la “precisión arbitraria” incluye, entre otras cosas,
   que estos son números exactos, y los números exactos deben tener un punto decimal,
   en otras palabras, fraccionario.
2. Eso es puede ser tanto positivo como negativo.
3. Longitud arbitraria, porque "precisión arbitraria" también significa
   "Un número arbitrario de dígitos".
4. De hecho, los números BigDecimal son números reales. Pero instalando
   Diferentes configuraciones, puedes usarlas no solo en cálculos científicos,
   y también en los financieros.
Entonces, las oraciones subrayadas fueron el principal factor de confusión para mí; en realidad, simplemente las eliminaría del texto, porque en realidad son más o menos lo mismo y, además, son más o menos lo mismo que se dice en la oración número 5. Aquellos. tres oraciones seguidas solo dicen que el valor sin escala se multiplica por 10 elevado a una potencia igual a la escala con un signo menos. Esto es confuso cuando lo lees por primera vez, porque cuando lees la oración número 3, entiendes que dado que hay si, significa que habrá una cosa aquí, y en la siguiente oración algo más. Pero no, ambas frases dicen lo mismo, sólo que con palabras diferentes. Bueno, la tercera oración consecutiva (la última del párrafo) sobre lo mismo probablemente sea como un tiro de control. No está claro por qué el texto se compiló de una manera tan confusa, porque la fórmula unscaledValue × 10 -scale de la última oración da la definición de un número grande de la manera más clara, inequívoca y completa posible.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION