Skip to content

Commit 3b36551

Browse files
authored
[Sync EN] Clarify intval() behavior with scientific notation numeric strings (#2757)
Ajout d'une note explicitant que les chaines numeriques en notation scientifique sont analysees entierement avant la conversion en entier, avec un exemple d'overflow vers PHP_INT_MAX. Fixes #2750
1 parent 38ce0de commit 3b36551

1 file changed

Lines changed: 29 additions & 3 deletions

File tree

reference/var/functions/intval.xml

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: d816a0fad6c458d9515f697cc89e26ca9d8069f5 Maintainer: yannick Status: ready -->
2+
<!-- EN-Revision: 6197a68b1e9bc777323fa0df01adbed4d0c743f4 Maintainer: lacatoire Status: ready -->
33
<!-- Reviewed: no -->
44
<refentry xml:id="function.intval" xmlns="http://docbook.org/ns/docbook">
55
<refnamediv>
@@ -97,10 +97,36 @@
9797
<para>
9898
Les chaînes de caractères retournent la plupart du temps 0, cela dépend des
9999
caractères à l'extrême gauche de la chaîne. La règle
100-
courante du
101-
<link linkend="language.types.integer.casting">transtypage d'entier</link>
100+
courante du
101+
<link linkend="language.types.integer.casting">transtypage d'entier</link>
102102
s'applique.
103103
</para>
104+
<note>
105+
<simpara>
106+
Les chaînes numériques utilisant la notation scientifique (contenant la
107+
lettre <literal>e</literal> ou <literal>E</literal>) sont d'abord analysées
108+
comme des nombres avant d'être converties en entier.
109+
</simpara>
110+
<simpara>
111+
Étant donné que la partie numérique de la chaîne est analysée dans son
112+
ensemble, le résultat n'est pas simplement la partie entière de tête. Les
113+
exposants importants peuvent en outre déborder jusqu'à
114+
<constant>PHP_INT_MAX</constant> :
115+
</simpara>
116+
<informalexample>
117+
<programlisting role="php">
118+
<![CDATA[
119+
<?php
120+
echo intval('42.42e42'); // 9223372036854775807 sur les systèmes 64 bits
121+
?>
122+
]]>
123+
</programlisting>
124+
</informalexample>
125+
<simpara>
126+
Voir <link linkend="language.types.numeric-strings">Chaînes numériques</link>
127+
pour des détails sur l'interprétation de ce type de chaînes.
128+
</simpara>
129+
</note>
104130
</refsect1>
105131
<refsect1 role="changelog">
106132
&reftitle.changelog;

0 commit comments

Comments
 (0)