svn: /phpdoc/it/trunk/language/types/ float.xml

From: Date: Sat, 05 Nov 2016 11:12:54 +0000
Subject: svn: /phpdoc/it/trunk/language/types/ float.xml
Groups: php.doc.it 
Request: Send a blank email to doc-it+get-2048@lists.php.net to get a copy of this message
pastore Sat, 05 Nov 2016 11:12:54 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=340881 Log: Sync with EN Changed paths: A phpdoc/it/trunk/language/types/float.xml Added: phpdoc/it/trunk/language/types/float.xml =================================================================== --- phpdoc/it/trunk/language/types/float.xml (rev 0) +++ phpdoc/it/trunk/language/types/float.xml 2016-11-05 11:12:54 UTC (rev 340881) @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- EN-Revision: 329281 Maintainer: SvenHolmgren Status: ready --> +<sect1 xml:id="language.types.float" xmlns:xlink="http://www.w3.org/1999/xlink"> + <title>Numeri floating point</title> + + <para> + I valori floating point (anche conosciuti come "float", "double", o "numeri reali") + possono essere specificati utilizzando una delle seguenti sintassi: + </para> + + <informalexample> + <programlisting role="php"> +<![CDATA[ +<?php +$a = 1.234; +$b = 1.2e3; +$c = 7E-10; +?> +]]> + </programlisting> + </informalexample> + + <para> + Formalmente: + </para> + + <informalexample> + <programlisting> +<![CDATA[ +LNUM [0-9]+ +DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) +EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM}) +]]> + </programlisting> + </informalexample> + + <para> + La dimensione di una variabile float dipende dalla piattaforma in uso, sebbene un massimo di ~1.8e308 con + una precisione di circa 14 cifre decimali sia il valore comune (il formato a 64 bit + IEEE). + </para> + + <warning xml:id="warn.float-precision"> + <title>Precisione di un valore floating point</title> + + <para> + I numeri floating point hanno una precisione limitata. Nonostante questa dipenda dal + sistema in uso. PHP tipicamente utilizza il formato IEEE 754 double-precision, il quale + pone un errore relativo massimo causato dall'arrotondamento nell'ordine di 1.11e-16. + Operazioni aritmetiche non elementari possono restituire un errore maggiore e, di conseguenza, + la propagazione dell'errore deve essere considerata quando più operazioni vengono eseguite + in successione. + </para> + + <para> + In più, alcuni numeri razionali che sono esattamente rappresentabili come numeri + floating point in base 10, ad esempio <literal>0.1</literal> o + <literal>0.7</literal>), non hanno, al contrario, una rappresentazione come numeri + floating point in base 2, la quale viene utilizzata internamente dal sistema, indipendentemente dalla dimensione + della mantissa. Dunque, questi non possono essere convertiti nella loro controparte binaria + interna senza una piccola perdita di precisione. Ciò può portare a risultati + confusionari: per esempio, <literal>floor((0.1+0.7)*10)</literal> solitamente + ritornerà come risultato <literal>7</literal> invece di <literal>8</literal>, + in quanto la sua rappresentazione interna sarà qualcosa di simile a + <literal>7.9999999999999991118...</literal>. + </para> + + <para> + Perciò non fate mai affidamento sui risultati numerici decimali sino all'ultima cifra e non comparate + numeri floating point direttamente per uguaglianza. Se è necessaria una maggior + precisione, sono disponibili le <link linkend="ref.bc">funzioni matematiche con precisione arbitraria</link> + e le funzioni <link linkend="ref.gmp">gmp</link>. + </para> + + <para> + Per una "semplice" spiegazione, vedere la <link xlink:href="&url.floating.point.guide;">guida per floating point</link>, + la quale è anche intitolata "Why don’t my numbers add up?" + </para> + </warning> + + <sect2 xml:id="language.types.float.casting"> + <title>Conversione a float</title> + + <para> + Per informazioni sulla conversione di <type>string</type> a <type>float</type>, vedere + <link linkend="language.types.string.conversion">Conversione di stringhe in + numeri</link>. Per valori di altro tipo il procedimento viene effettuato + convertendo inizialmente il valore a <type>integer</type> e, successivamente, a + <type>float</type>. Vedere + <link linkend="language.types.integer.casting">Convertire in interi</link> + per maggiori informazioni. A partire da PHP 5 comparirà un avviso se un + <type>object</type> viene convertito a <type>float</type>. + </para> + + </sect2> + + <sect2 xml:id="language.types.float.comparison"> + <title>Comparare float</title> + + <para> + Come fatto notare nell'esempio sopra, comparare valori floating point per uguaglianza potrebbe risultare + problematico a causa della loro rappresentazione interna. Tuttavia + esistono dei metodi per comparare dei valori floating point che aggirano + queste limitazioni. + </para> + + <para> + Per confrontare valori floating point per uguaglianza viene scelto un limite superiore all'errore + relativo creato dall'arrotondamento. Questo valore è conosciuto come la macchina epsilon, + o unità roundoff, ed è la più piccola differenza accettabile nel calcolo. + </para> + + <informalexample> + <simpara> + <varname>$a</varname> e <varname>$b</varname> sono uguali per 5 cifre di + precisione. + </simpara> + <programlisting role="php"> +<![CDATA[ +<?php +$a = 1.23456789; +$b = 1.23456780; +$epsilon = 0.00001; + +if(abs($a-$b) < $epsilon) { + echo "true"; +} +?> +]]> + </programlisting> + </informalexample> + </sect2> + + <sect2 xml:id="language.types.float.nan"> + <title>NaN</title> + <para> + Alcune operazioni possono ritornare un valore rappresentato dalla costante + <constant>NAN</constant>. Questo risultato rappresenta un valore indefinito o + non presentabile nei calcoli di numeri floating point. Qualsiasi comparazione + per uguaglianza o per identicità di questo valore con qualsiasi altro, incluso se stesso, + risulterà &false;. + </para> + <para> + Poiché <constant>NAN</constant> rappresenta un qualsiasi numero di differenti valori, + <constant>NAN</constant> non dovrebbe essere comparato ad altri valori, incluso + se stesso, e dovrebbe invece essere verificato tramite la funzione <function>is_nan</function>. + </para> + </sect2> +</sect1> + +<!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:1 +sgml-indent-data:t +indent-tabs-mode:nil +sgml-parent-document:nil +sgml-default-dtd-file:"~/.phpdoc/manual.ced" +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +vim600: syn=xml fen fdm=syntax fdl=2 si +vim: et tw=78 syn=sgml +vi: ts=1 sw=1 +--> Property changes on: phpdoc/it/trunk/language/types/float.xml ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL Added: svn:eol-style + native

« previous php.doc.it (#2048) next »