`pretty-format-json` modifies floating point numbers that have too many digits of precision
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start by reproducing the issue with the pretty-format-json hook and inspect the high-precision-numbers branch and linked diff for its existing test case. Done means the hook preserves the input value 4.4257052820783003 in formatted output without losing decimal digits, with the regression test passing.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
pretty-format-json modifies floating point numbers that have too many digits of precision.
Background
I have to work with JSON files that may be generated by non-python programs. These files, for whatever reason, have numbers that have up to 16 digits after the decimal place.
(It's absurd, really. The people taking these measurements are somehow able to measure 0.1μHz on a 10GHz scale?? Yeah, they're saving values like 5.9257052820783001 GHz. Someone needs to teach them about significant figures... but that's beside the point. The point is I have to deal with this data 😒)
Steps to Reproduce
- Create the following json file:
{"foo": 4.4257052820783003} - Run pretty-format-json on it.
Expected Output:
{
"foo": 4.4257052820783003
}
Actual Output:
{
"foo": 4.4257052820783
}
The diff from expected is:
{
- "foo": 4.4257052820783003
+ "foo": 4.4257052820783
}
Version Info
- pre-commit: 2.19.0
- pre-commit-hooks: v4.2.0
- Python: 3.8.8
- OS: Debian 11
Discussion
This might be something that has to be fixed within the python builtin json package. A custom JSON encoder/decoder that wraps things using decimal.Decimal might work too.
I've created a test case for this. See my high-precision-numbers branch or the diff.
I'll see if I have time to actually fix this, but I don't expect to ☹️.
- Lenguaje dominante
- Python
- Estrellas
- 6.7k
- Forks
- 800
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pre-commit/pre-commit-hooks
-
Immutable Releases Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
pre-commit/pre-commit-hooks#1218 · 4 comentarios · 2 reacciones ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
pre-commit/pre-commit-hooks#1020 · 8 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
pre-commit/pre-commit-hooks#749 · 1 reacción ·
-
enhancement good-first-issue
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
pre-commit/pre-commit-hooks#612 · 13 comentarios ·
-
Ban unarmored GPG keys Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
pre-commit/pre-commit-hooks#339 · 18 comentarios · 2 reacciones ·
Todos los issues de pre-commit/pre-commit-hooks
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
🐛 Bug 🔔 Pending processing
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
jumpserver/jumpserver#17584 ·