2010-02-12 16 views
8

Hepimizin bildiği gibi, kayan nokta aritmetiği her zaman tam olarak doğru değildir, ama tutarsızlıklarıyla nasıl başa çıkabilirsiniz? PHP 5.2.9 yılında Örnek olarak PHP'de yüzer garip yuvarlama ile nasıl başa çıkılır

:

echo round(14.99225, 4); // 14.9923 
echo round(15.99225, 4); // 15.9923 
echo round(16.99225, 4); // 16.9922 ?? 
echo round(17.99225, 4); // 17.9922 ?? 
echo round(25.99225, 4); // 25.9922 ?? 
echo round(26.99225, 4); // 26.9923 

Nasıl bu geçici bir çözüm olur (bu 5.3 olmaz)?

cevap

4

Onun tutarsızlıklarıyla nasıl baş edersiniz? Kesin sonuçlar ondalık gösterim konularda (yani para) dayalı şeyler için

  • , IEEE754 yüzen, az önce Hesaplamalarınızı ihtiyaç şeyler için BCMath
  • gibi "bignum" kütüphaneleri kullanmak kullanmayın nispeten kesin olarak (çoğu bilimsel hesaplamalar gibi) numerically stable algoritmalarını kullanırsınız, böylece tutarsızlıklar en önemsiz bitlerde kalır (nerede önemli değil).
İlgili konular