• [^] # Re: mode avocat du diable

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Python 3.2. Évalué à 1.

    Certes, PḦP est une bouillie infâme au niveau des types(削除) numériques (削除ここまで).

    Un type numérique, c'est un type qui permet de représenter des nombres. En C les types numériques de base sont int, long, float, double et char. En PHP, effectivement, il y a int et float. Mais j'avoue que lorsque je pensais à l'expression « type numérique », je pensais à Javascript où seul le type numérique existe.

    Les nombres flottant n'existent pas. float est un type numérique permettant de représenter de manière approximative les nombres réels. Mais en aucun cas on ne peut le considérer comme des nombres.

    Bref, depuis j'ai testé quelques autres langages par curiosité. Avec CLisp, l'expression (/ 1 2) est évaluée à un demi, mais je ne connais pas assez LISP pour comprendre si CLisp retiens l'expression précise et attend pour évaluer par exemple. En Ruby, il faut qu'aussi bien le numérateur que le dénominateur soient un nombre décimal ou un flottant pour que l'expression soit évaluée à 0.5 (je ne connais pas le type par défaut utilisé pour stocker les nombres décimaux). Perl 5 évalue à 0.5 Bash évalue à 0, et ne comprends rien d'autre que les entiers. Lua évalue à 0.5.

    Bref, voilà bien un détail à la con (ou gotcha) auquel il faut faire gaffe quand on apprend un nouveau langage.