processing / processing/libprocessing

Discrepancy: number comparison differs from Processing Java `(0.1 + 0.2 == 0.3)`

Ouverte
#203 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Rust
Étoiles
69
Forks
14
Merge moyen
15 j 22 h
PR mergées (30 j)
3

Description

I don't know whether this is something that needs to be addressed or just documented.
I suppose this is related to the difference between float and double precision (?)

In Processing, this condition evaluates to true:

void setup() {
  size(400, 400);

  if (0.1 + 0.2 == 0.3) {
    background(0, 255, 0);
    circle(200, 200, 100);
  }
}

The equivalent mewnala sketch evaluates the condition as false.

from mewnala import *

def setup():
    size(200, 200)

    if 0.1 + 0.2 == 0.3:
        background(0, 255, 0)
        circle(200, 200, 100)

run()

Note: size is reduced in mewnala to account for https://github.com/processing/libprocessing/issues/198

Image

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Exécutez les sketches Processing Java et mewnala Python fournis afin de confirmer les résultats différents. Analysez ensuite le comportement de l’évaluation numérique dans l’implémentation Rust et déterminez si la divergence doit être corrigée ou documentée, avec un test ou une mise à jour de la documentation définissant le comportement attendu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java, python, rust
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
À clarifier
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.