Too big `string` to `int` cast results nonsense
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
if ( (string) PHP_INT_MAX === '9223372036854775808' ) {
echo "string identical" . PHP_EOL;
}
if ( PHP_INT_MAX === (int) '9223372036854775808' ) {
echo "int identical" . PHP_EOL;
}
Resulted in this output:
int identical
But I expected this output instead:
Deprecated: Conversion from string '9223372036854775808' to int loses precision
A very similar error already exists when converting float to int implicitly e.g. $a[ PHP_INT_MAX + 1 ] = '';
See also https://github.com/php/php-src/issues/17081 which reports that for float/int casts
PHP Version
PHP 8.4.8
Operating System
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le comportement du cast de string vers int sur PHP 8.4.8, puis suivez le chemin de conversion de string vers entier de l’interpréteur PHP. Comparez-le avec la gestion existante de la perte de précision lors de la conversion de float vers int mentionnée dans l’issue. Le travail est terminé lorsque la conversion d’un string trop volumineux signale la dépréciation attendue au lieu de produire silencieusement PHP_INT_MAX.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, php
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100