Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[common] Decimal#hashCode is inconsistent with Decimal#equals

Abierto Apto para principiantes
#4,538 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@firasbouzazi ya está trabajando en esto.

Desde el 3/10/2026.

  • #4539 de @firasbouzazi — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
backend

Línea de trabajo

Empieza por localizar la implementación de Decimal y sus métodos equals y hashCode. Reproduce el ejemplo proporcionado de 1.0 versus 1.00, luego verifica que valores Decimal iguales produzcan el mismo código hash y que la búsqueda en HashSet tenga éxito.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Search before asking
  • I searched in the issues and found nothing similar.
Fluss version

1.0.0 (latest release)

Please describe the bug 🐞

Decimal#equals compares values numerically via compareTo, so 1.0 and 1.00 are equal. But Decimal#hashCode returns toBigDecimal().hashCode(), and BigDecimal#hashCode depends on the scale, so equal values get different hash codes, which violates the hashCode contract.

Decimal a = Decimal.fromBigDecimal(new BigDecimal("1.0"), 5, 1); Decimal b = Decimal.fromBigDecimal(new BigDecimal("1.00"), 5, 2); a.equals(b); // true a.hashCode() == b.hashCode(); // false (311 vs 3102) new HashSet<>(Collections.singleton(a)).contains(b); // false

Decimal is @PublicStable, so users putting values in a HashSet/HashMap can silently miss equal values. Fix: hash toBigDecimal().stripTrailingZeros(). I'm willing to submit a PR.

Solution

No response

Are you willing to submit a PR?
  • I'm willing to submit a PR!
Lenguaje dominante
Java
Estrellas
2.2k
Forks
646
Merge medio
2 d 28 min
PR fusionados (30 d)
128

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/fluss

Todos los issues de apache/fluss

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.