PHP'de float türünü kullanma hakkında Floating-Point guide okudum. Cevap BC Math uzantısını kullanıyor. Dizeleri kullanmak, floatı tam bir tip olarak gösterebilir ve float ve tamsayı sorunlarını önleyebilir.PHP float kullanımı için en iyi yöntem
Bu arada, Github ve BC site uzantısıyla çalışan bu sitede hiçbir iyi örnek bulamadım. PHP'yi dizeleri kullanmaya zorlamak için nasıl temiz bir yol var, bunları nasıl değerlendirmeliyim?
Özellikle BC Math uzantısını MySQL DECIMAL veri türleri ile kullanmanın en iyi yolu nedir?
PHP 5.4.10 ile yaptığım örnek testi, doğru cevap: 0,2999999999996
<?php
bcscale(13);
$a = '0.3';
$b = '0.0000000000004';
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.2999999999996
echo '<hr />';
$a = "0.3";
$b = "0.0000000000004";
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.2999999999996
echo '<hr />';
$a = 0.3;
$b = 0.0000000000004;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = '0.3';
$b = '0.0000000000004' + 0;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = (string) 0.3;
$b = (string) 0.0000000000004;
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
echo '<hr />';
$a = strval(0.3);
$b = strval(0.0000000000004);
echo $a-$b; // 0.3
echo '<br />';
echo bcsub($a, $b); // 0.3000000000000
?>
, ilk ve ikinci vakada sorun nedir? Eğer "en iyi" seçeneği bilmek istiyorsanız, tek tırnak '' iki kat daha iyidir '' çünkü çift tırnak kullanırsanız PHP, değişken isimleri ve kaçış sıralarını doldurmak için ekstra zaman harcar. – Dave
Hızlı cevap verdiğiniz için teşekkürler Dave, bu tek tırnakları kullanarak işi yapıyor. Veriler kaybolmadan önce doğru türde bir değere sahip olduğumdan nasıl emin olacağım. Örneğin, mysql – Mike
@Dave satırlarını getirirken, herhangi bir yeni php sürümü ile doğru değildir. Lütfen [bu makaleyi okuyun] (http://nikic.github.com/2012/01/09/Disproving-the-Single-Quotes-Performance-Myth.html). – Maerlyn