mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
195 lines
6.2 KiB
XML
195 lines
6.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- $Revision$ -->
|
||
<!-- EN-Revision: a1e3d629b4f01ee41bd38391cd5c6ae5ee894cb3 Maintainer: nilgun Status: ready -->
|
||
<sect1 xml:id="language.types.float" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<title>float</title>
|
||
|
||
<para>
|
||
Gerçek sayılar (veya kayan noktalı sayılar) şu sözdizimleri ile
|
||
belirtilebilir:
|
||
</para>
|
||
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$a = 1.234;
|
||
$b = 1.2e3;
|
||
$c = 7E-10;
|
||
$d = 1_234.567; // PHP 7.4.0 ve sonrası
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
|
||
<para>
|
||
Biçimsel olarak PHP 7.4.0 ve sonrasında (öncesinde altçizgilere izin
|
||
verilmezdi):
|
||
</para>
|
||
|
||
<informalexample>
|
||
<programlisting>
|
||
<![CDATA[
|
||
LNUM [0-9]+(_[0-9]+)*
|
||
DNUM ({LNUM}?"."{LNUM}) | ({LNUM}"."{LNUM}?)
|
||
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
|
||
<para>
|
||
Bir gerçek sayının bellekte kapladığı genişlik platforma göre değişmekteyse
|
||
de kabaca 14 hanelik bir hassasiyetle 1.8e308'lik olası bir en büyük değer
|
||
(64 bitlik IEEE biçemi) hepsi için sağlanır.
|
||
</para>
|
||
|
||
<warning xml:id="warn.float-precision">
|
||
<title>Kayan nokta hassasiyeti</title>
|
||
|
||
<para>
|
||
Kayan noktalı sayılar sınırlı bir hassasiyete sahiptir. Sisteme bağımlı
|
||
olmakla birlikte PHP normalde (1.11e-16'lık bir yuvarlamadan dolayı görece
|
||
en büyük hatayı verecek olan) IEEE 754 çift hassasiyetli biçimi kullanır.
|
||
4 temel işlemden daha karmaşık aritmetik işlemler daha büyük hatalar
|
||
verebilir, dolayısıyla işlemler karmaşık hale gelmeye başlayınca hatanın
|
||
açıklanması bir önkabul olarak ele alınmalıdır.
|
||
</para>
|
||
|
||
<para>
|
||
Ek olarak, <literal>0.1</literal> veya <literal>0.7</literal> gibi 10
|
||
tabanında kayan noktalı sayılar olarak tamamiyle gösterilebilen gerçel
|
||
sayılar, 2 tabanında kayan noktalı sayılar olarak tamamiyle gösterilemezler.
|
||
Bu bakımdan, az da olsa bir kayıp olmaksızın dahili ikil
|
||
karşılıklarına dönüştürülemezler. Bunun şöyle bir sonucu olur: örneğin,
|
||
<code>floor((0.1+0.7)*10)</code> işlevinden beklendiği gibi
|
||
<literal>8</literal> değil, <literal>7</literal> döner; bunun sebebi
|
||
dahili gösterimin aslında <literal>7.9999999999999991118...</literal> gibi
|
||
bir değer olmasıdır.
|
||
</para>
|
||
|
||
<para>
|
||
Bu bakımdan, son ondalık hanesine bakarak sonucun ne olacağına karar
|
||
verilemez, bu bakımdan kayan noktalı sayılar arasında asla eşitlik
|
||
karşılaştırmaları yapılmaz. Eğer daha yüksek hassasiyet isteniyorsa <link
|
||
linkend="ref.bc">keyfi hassasiyetli matematik işlevleri</link> ve <link
|
||
linkend="ref.gmp">gmp</link> işlevleri kullanılabilir.
|
||
</para>
|
||
|
||
<para>
|
||
"Basit" bir açıklama için
|
||
<link xlink:href="&url.floating.point.guide;">kayan noktalı sayılar
|
||
kılavuzuna</link> bakınız.
|
||
</para>
|
||
</warning>
|
||
|
||
<sect2 xml:id="language.types.float.casting">
|
||
<title><code>float</code> türüne dönüşüm</title>
|
||
|
||
<sect3 xml:id="language.types.float.casting.from-string">
|
||
<title>Dizelerden</title>
|
||
|
||
<simpara>
|
||
Dize <link linkend="language.types.numeric-strings">sayısal</link> veya
|
||
öncü sayısal ise, karşılık gelen <type>float</type> değere çözümlenir,
|
||
aksi takdirde sıfıra (<literal>0</literal>) dönüştürülür.
|
||
</simpara>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="language.types.float.casting.from-other">
|
||
<title>Diğer türlerden</title>
|
||
|
||
<para>
|
||
Diğer türlerdeki değerler için, dönüşüm, değerin önce <type>int</type>'e
|
||
ardından <type>float</type>'a dönüştürülmesiyle gerçekleştirilir.
|
||
Daha fazla bilgi için bkz.
|
||
<link linkend="language.types.integer.casting"><type>int</type> türüne
|
||
dönüşüm</link>.
|
||
</para>
|
||
|
||
<note>
|
||
<para>
|
||
Belirli türlerin <type>int</type> türüne dönüştürülürken tanımlanmamış
|
||
davranışları olup, bu ayrıca <type>float</type> türüne dönüştürülürken de
|
||
geçerlidir.
|
||
</para>
|
||
</note>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.float.comparison">
|
||
<title>Kayan noktalı sayıların karşılaştırılması</title>
|
||
|
||
<para>
|
||
Yukarıdaki uyarıda kısaca değinildiği gibi kayan noktalı sayılar arasında
|
||
eşitlik karşılaştırmaları, bunların dahili gösterimlerinden dolayı biraz
|
||
sorunludur. Bununla birlikte, bu sınırlamaların aşılmasını ve kayan noktalı
|
||
sayılar arasında karşılaştırma yapılmasını sağlayan yollar vardır.
|
||
</para>
|
||
|
||
<para>
|
||
Kayan noktalı değerlerin eşitliğini sınamak için yuvarlamadan dolayı ortaya
|
||
çıkan göreli hatanın bir üst sınırı kullanılır. Bu değer makine epsilonu
|
||
veya yuvarlama birimi olarak bilinir ve hesaplamalardaki kabul edilebilir en
|
||
küçük farktır.
|
||
</para>
|
||
|
||
<informalexample>
|
||
<simpara>
|
||
<varname>$a</varname> ve <varname>$b</varname> 5 haneli hassasiyetle
|
||
eşittir.
|
||
</simpara>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$a = 1.23456789;
|
||
$b = 1.23456780;
|
||
$epsilon = 0.00001;
|
||
|
||
if(abs($a-$b) < $epsilon) {
|
||
echo "doğru";
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="language.types.float.nan">
|
||
<title>NaN</title>
|
||
<para>
|
||
Bazı sayısal işlemler <constant>NAN</constant> sabiti ile gösterilen bir
|
||
değerle sonuçlanabilir. Bu sonuç, kayan noktalı hesaplamalarda
|
||
tanımlanamayan veya gösterilemeyen bir değeri gösterir. Bu değerin, kendisi
|
||
dahil herhangi bir değerle gevşek ya da sıkı bir karşılaştırması &false;
|
||
sonucuna sebep olur.
|
||
</para>
|
||
<para>
|
||
<constant>NAN</constant> farklı değerdeki herhangi bir sayıyı temsil
|
||
ettiğinden kendisi dahil fakat &true; hariç, başka bir değerle
|
||
karşılaştırılmamalı, bunun yerine değer <function>is_nan</function> ile
|
||
sınanmalıdır.
|
||
</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
|
||
-->
|