Ben Flaş ve PHP aynı kayan noktalı sayılar üretecektir kabul edebilir miyiz?

3 Cevap php

Ben geliştiriyorum çok oyunculu bir oyunda, kayan nokta sayıları bir kaç değerlere sahiptir. Arka-uç (PHP) ve (Flash), ön-uç bazen iletişimi en aza indirmek için, bu sayılar aynı hesaplamaları yapmak.

Ben şu anda tüm hesaplamaları aynı olacağını varsaymak için her iki taraf 64-bit çift kullanıyor, ama ben güvendeyim emin yapıyorum?

Örneğin, ne dönüşüm float dize hakkında - Ben Flaş PHP gibi bir potansiyel farklı bir uygulama olan endişe gerekir? (Bu durumda, bizim oyun senkronize dışına gidecek - sunucu başka iken istemci bir devlet olduğunu düşünüyorum)

Bazı testler ile, appears aynı olacak, ama ben sadece emin değilim. Birisi bana bu açıklık miyim?

3 Cevap

Farklı derleyiciler bile aynı ifade için farklı bir kod üretebilir çünkü henüz biz Tanrı bilir ne tarafından derlenen farklı tercüman karşılaştırarak, yapamam.

En sık gerekli hassasiyet bağlı ince olacak ama ama pratikte matematiksel aynı olması gerekiyordu sayılar değil hesaplanırken kenar durumlarda sadece kendi ucunda bir iğne dengelemek için çalışıyor gibi, operasyonlar nedeniyle farklı sipariş, ne olacak. Düzenli güncellemeler numaraları biraz daha farklı bir anlamlı şekilde çıkacaktır gerçeğini değiştirmez.

Katları kullanmak istiyorsanız, size aklınızda bazı hata marjı ile sayısal algoritmaları tasarımı olmalıdır. Alternatif olarak, sadece performans olasılıkla ağı ile sınırlıdır devlet için sabit nokta aritmetik kullanabilirsiniz ama başka bir yerde yüzer kullanın.

Ben gerçekten aynı kayan nokta kodu olduğu varsayımı altında çalışmak istiyorum. (Sadece deltalar yerine hesaplanan tam veri ile kare) periyodik kontrol noktaları, doğru göndermek dışında mı? Herhangi bir küçük hatalar olanlar sırasında düzeltilmiş olacaktır.

Eğer önemli ondalık basamak sayısını sınırlamak, böylece hataları yuvarlama maruz olmayacak ve dönüşüm yanı sıra şüpheli herhangi başka yöntemler float dize kendi versiyonunu rulo Eh, üzerinde farklı bir etkiye sahip olabilir platformları, ben iyi olduğunu düşünüyorum.