Tüm sistemin kayan noktaları operasyonları aynı mı?

4 Cevap php

Biz PHP Bu web uygulamasını yapıyoruz ve raporlarda çalışırken bizim kodlama doğru işlemleri yapıyor emin olmak için sonuçları karşılaştırmak Excel dosyaları var.

Şimdi bazı farklılıklar nedeniyle kayan nokta aritmetiği içine koşuyoruz. Biz aynı bölünmeleri ve çarpımı yapıyor ve biraz farklı numaraları içine koşuyoruz, bir önemli fark kadar ekleyin.

Excel, CPU kayan noktalı aritmetik oluyor ve PHP de operasyonları için CPU güvendiğini delege ise benim soru. Ya da her uygulama matematik algoritmaları kendi belirledi uygular mı?

4 Cevap

Microsoft Excel kendi hesaplamaları gerçekleştirmek için belirli bir makinede yerli çift türünü kullanır. Ben PHP kullanarak tam olarak ne olduğundan emin değilim.

Ancak, hatta x86 tabanlı makinelerde bir kayan noktalı sayı kopyalayarak bu değer değişebilir unutulmamalıdır. Yüzer puan 80 bit genişliğinde kayıtlarında dahili olarak saklanır. Bunlar, 64 bit genişliğinde bloklar bellekte saklanır. Bu nedenle, Excel ve PHP hem de x86 tabanlı makineler üzerinde çalışan varsayarak, hatta benzer hesaplamaları farklı değerler alabilirsiniz. Özellikle kayan nokta türleri tarafından desteklenen aralıkları uçlarda.

Son olarak, double Excel PHP kodu kullanarak ve (PHP kodu birini kullanan varsa) float olduğu arasında bariz bir fark var. Eğer daha az hassasiyete sahip float s olarak bu uyumsuz değil emin olun.

EDIT: Bu konuda da Unuttum - Orada PHP veya Excel (daha büyük olasılıkla Excel) ya / SSE uzantıları istihdam ise onların kayan nokta işlemi 64 bit üzerinde işlem olarak, çıktı farklılıklar olabilir, değil 80 bit, iki katına olacaktır.

Orada sistemlerinin çoğu korkunç büyük değil ama çoğu amaçlar için yeterince iyi olan, IEEE 754 uygulamak. Eğer daha hassas istiyorsanız o GMP gibi bir şey bakmak.

PHP şamandıra hesaplamalar ile uğraşırken çok dikkatli olun. PHP esnek bir betik dilidir, ama türleri arasında döküm ya da veri okurken esnekliği ve gevşek yazarak tehlikelere neden olabilir.

Ben çok PHP kılavuzunda pages on floats okumanızı öneririz. BC Math bu keyfi hassas hesaplamalar için verilmiştir ve ne yapıyorsun bağlı olarak, bunu yararlanmak isteyebilirsiniz adlı bir modül vardır.

Uzun ama keyfi değil hassasiyet için, try qd.