MQL4 ve MQL5'te Rakamları () atlayarak herhangi bir sayıdan (sadece tırnak işaretleri değil) sonra ondalık basamak sayısını alma
Ondalık noktadan sonra ondalık basamak sayısını almak gerektiğinde nadir bir durum yaşayan tek ben değilim sanırım ve Digits() işlevi yalnızca tırnak işaretleri ile çalışıyor ve ayrıca bu konuda hiçbir bilgi yok herhangi bir yerde (en azından bu yazıyı daha önce yazarken buldum, bu yüzden hangi çözümü bulduğumu göstermek istiyorum)?
Görünüşe göre, öz çok basit, ancak yine de bir dezavantajı var - onlardan sonra başka basamak yoksa bu işlev sıfırları tanımıyor. Örneğin, fonksiyona 0,01 sayısı verilirse 2, 0,0000 ise 0 döndürür (yani dört sıfır görmez). Bu nedenle, geliştirmelerinizde bu eksikliği göz önünde bulundurun.
MQL5'teki kodun biraz iyileştirilmesi gerekiyordu, çünkü görünüşe göre MQL5'te çift tipteki değişkenler, kendisine bir tamsayı atanmış olup olmadığına bakılmaksızın sonunda otomatik olarak ,0 atanmıştır. Ve bu nedenle fonksiyon asla 0 döndürmedi
2.4875 sayısını verdiğimizi varsayalım, fonksiyon 4 döndürür.
Ve bundan sonra ne yapmalı? Anlamadığım bir şey
Ondalık noktadan sonra ondalık basamak sayısını almak gerektiğinde nadir bir durum yaşayan tek ben değilim sanırım ve Digits() işlevi yalnızca tırnak işaretleri ile çalışıyor ve ayrıca bu konuda hiçbir bilgi yok herhangi bir yerde (en azından bu yazıyı daha önce yazarken buldum, bu yüzden hangi çözümü bulduğumu göstermek istiyorum)?
Görünüşe göre, öz çok basit, ancak yine de bir dezavantajı var - onlardan sonra başka basamak yoksa bu işlev sıfırları tanımıyor. Örneğin, fonksiyona 0,01 sayısı verilirse 2, 0,0000 ise 0 döndürür (yani dört sıfır görmez). Bu nedenle, geliştirmelerinizde bu eksikliği göz önünde bulundurun.
MQL4'teki kod
MQL5'teki kod
MQL5'teki kodun biraz iyileştirilmesi gerekiyordu, çünkü görünüşe göre MQL5'te double türündeki değişkenler, kendisine bir tamsayı atanıp atanmadığına bakılmaksızın, sonunda otomatik olarak ,0 atanır. Ve bu nedenle fonksiyon asla 0 döndürmedi
string string_value = ( string ) value ;
daha fazla okumak yok :-)
2.4875 sayısını verdiğimizi varsayalım, fonksiyon 4 döndürür.
Ve bundan sonra ne yapmalı? Anlamadığım bir şey
Kimin neye ihtiyacı olduğuna bağlı. Örneğin, korelasyon indeksini hesaplamayı kolaylaştırmak için tam sayılara ihtiyacım vardı.
daha fazla okumak yok :-)
Bir programcı için net olmayan nedir?))
Bir şey olursa , bir StringFind() işlevi vardır, arama yapmak için karakterler arasında dolaşmanıza gerek yoktur.
Teşekkür ederim
ayrıca iyi bir çözüm
İyi bir çözüm genellikle doğru şekilde çalışır
void OnStart () { double price = 500000000.0001 ; Print ( price, ":" , GetDigits( price )); }
Sonuç: 500000000.0001:8
Ondalık noktadan sonra kaç basamak var? gerçekten 8 mi?
İyi bir çözüm genellikle doğru şekilde çalışır
Sonuç: 500000000.0001:8
Ondalık noktadan sonra kaç basamak var? gerçekten 8 mi?
Evet, sekiz.
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Ondalık noktadan sonra ondalık basamak sayısını almak gerektiğinde nadir bir durum yaşayan tek ben değilim sanırım ve Digits() işlevi sadece tırnak işaretleri ile çalışıyor ve ayrıca bununla ilgili hiçbir bilgi yok herhangi bir yerde (en azından bu yazıyı daha önce yazarken bulamadım, bu yüzden bulduğum çözümü göstermek istiyorum)?
Görünüşe göre, öz çok basit, ancak yine de bir dezavantajı var - onlardan sonra başka basamak yoksa bu işlev sıfırları tanımıyor. Örneğin, fonksiyona 0,01 sayısı verilirse 2, 0,0000 ise 0 döndürür (yani dört sıfır görmez). Bu nedenle, geliştirmelerinizde bu eksikliği göz önünde bulundurun.
MQL4'teki kod
MQL5'teki kod
MQL5'teki kodun biraz iyileştirilmesi gerekiyordu, çünkü görünüşe göre MQL5'te çift tipteki değişkenler, kendisine bir tamsayı atanmış olup olmadığına bakılmaksızın sonunda otomatik olarak ,0 atanmıştır. Ve bu nedenle fonksiyon asla 0 döndürmedi