Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Hedeflere bağlı olarak, bazen tam sayılara tamamen geçmeye değer. Çok fazla sinir kurtarıyor :-) Her nasılsa birçok, birçok seviyeyi doğru bir şekilde işaretlemenin gerekli olduğu bir görev vardı, önce double ile yoruldum ve sonra her şeyi 0'dan tam noktalara aktardım ve her şey kolay, basit ve hatasız.
Görev gerektirmedikçe yuvarlama kullanmayın.
İşin aslı, görevler farklı :-)
Yuvarlama için MathFloor veya MathCeil kullanıyorsanız, orijinal sonucu istenen doğrulukta normalleştirmeniz gerekir.
Hesaplarken tam sayı yerine kesirli sayı çıkabileceğinden ve bu "kuyruk" nedeniyle sayı yanlış yuvarlandığından sonuç yanlıştır.
Örneğin:
Print ( DoubleToStr ( 1156.12 /point, 15 ));
Print ( NormalizeDouble ( 1156.12 /point, _Digits ));
şimdi MathFloor ile yuvarlamayı deneyelim
Print ( DoubleToStr ( MathFloor ( 1156.12 /point), 15 ));
Print ( MathFloor ( NormalizeDouble ( 1156.12 /point, _Digits )));
1.05 sayısını normalleştirirsem - temel olarak MathFloor işlevi olan 1.1'e normalleşir - ihtiyacım olanı döndürmez :-)
Çünkü MathFloor'u hiç kullanmazdım.
Ama görev farklı.
Но задача то другая.
neden başka? az önce sonucu aşağı yuvarlamanız gerektiğini yazdınız - MathFloor tam da bunu yapıyor
neden başka? az önce sonucu aşağı yuvarlamanız gerektiğini yazdınız - MathFloor tam da bunu yapıyor
Evet!!! ama bir normalleştirme yaparsam, matematikte toparlayacak ve MathFloor artık bir anlam ifade etmeyecek
1156.12 numaralı örneğin hemen üstünde bu sayı hafızada 1156.119999999999891 olarak saklanır.
yani, onu yüzde birlik sayılara yuvarlamaya çalışırsanız (tamsayıya dönüştürme yoluyla), o zaman 1156.12 yerine 1156.11 sayısını alırsınız - bu, kafanızı karıştıran "özellik"tir.
1156.12 numaralı örneğin hemen üstünde bu sayı hafızada 1156.119999999999891 olarak saklanır.
yani, onu yüzde birlik sayılara yuvarlamaya çalışırsanız (tamsayıya dönüştürme yoluyla), o zaman 1156.12 yerine 1156.11 sayısını alırsınız - bu, kafanızı karıştıran "özellik"tir.
Evet teşekkür ederim.