[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 451

 
bernc :

Onlar. bu fonksiyona ihtiyacımız var F(8.564.00) = 85464.00

8.5464/0.0001=85464
 
peshihod :

MathMod() bölmedir. Daha fazla saf matematik: TimeLocal () sonucunun her saniyede (veya daha sık) 20'ye bölünmesi durumunda, her 20 saniyede bir kalan sıfıra eşit olacaktır.

Sonuç: Aynı fikir farklı şekillerde uygulanabilir.


Neden her 20 saniyede bir? Örneğin, neden 19 veya 17 yaşında değil?

bool flag = true;
int i=0;
int w=0;
double sum;

int t=20;

int start()
{
sum=TimeLocal() / t;

if (flag)
{
while(i<20)
{

w=w+1;
Alert(+w,"-й, Результат TimeLocal-",+sum);
i++;
sum=sum/20;
Sleep(1000);

}
flag = false;
}
return(0);
}

Burada her 11 saniyede bir sıfırdır. 20'ye, 20'ye bölünür.

Noob soruları için özür dilerim, sadece anlamak istiyorum.

 

Neden 20'ye tam olarak 20 kez böldünüz?

Kazanana kadar paylaşmalısın ;)

 
peshihod :
8.5464/0.0001=85464

Teşekkür ederim.

Ama demek istediğim bu değil.Virgül üçlülerin ayırıcısıdır, ama nokta kesirli kısmın ayırıcısıdır.

Bir sayıya dönüştürülmesi gereken 8,5464.00 dizim var. StrToDouble(8.564.00) 8 değerini döndürür.

F(8.564.00) = 85464.00

 

bu işlevi yapmaya çalışın

{

https://docs.mql4.com/ru/strings/StringFind üzerinden virgül araması

İki bölümden yeni bir dize toplama: virgülden önceki dize ve virgülden sonraki dize https://docs.mql4.com/en/strings/StringGetChar

Sayıya dönüştür StrToDouble()

}

 

İşte güzel bir örnek, dediğin gibi her şey doğru.

hm...

Nasıl oluyor da tam 20 saniyede 0 oluyor. Yerel saati 80000000000 numarası altında görebilirsiniz ... Lanet olsun .. buradaki hile nedir? Belki biraz ara vermeliyim...

int i=0;
int e;
int w=0;
int start()

{
while(true)
{
e=MathMod(TimeLocal(), 20);
w=w+1;
Alert(+w,"-й, Результат MathMod-",+e);


Sleep(1000); // Спим 1-ну секунду


return(0);
}

 
rlx :

bu işlevi yapmaya çalışın

{

https://docs.mql4.com/ru/strings/StringFind üzerinden virgül araması

İki bölümden yeni bir dize toplama: virgülden önceki dize ve virgülden sonraki dize https://docs.mql4.com/en/strings/StringGetChar

Sayıya dönüştür StrToDouble()

}

Ve başka bir yol yok, aksi takdirde bu işlev uzun süre çalışacaktır.

 

MathMod (WHATNUMBER, 20) = 0 ise, bunun anlamı (eğer hafızam bana hizmet ediyorsa)

NE SAYISI 20 ile kalansız bölünür.

20 40 60 80 100 120 140 160 vb.

 
bernc :

Ve başka bir yol yok, aksi takdirde bu işlev uzun süre çalışacaktır.



Bir dizeden virgül nasıl kaldırılır bilmiyorum.

 
bernc :

Teşekkür ederim.

Ama demek istediğim bu değil, virgül üçlülerin ayırıcısıdır, ama nokta kesirli kısmın ayırıcısıdır.

Bir sayıya dönüştürülmesi gereken 8,5464.00 dizim var. StrToDouble(8.564.00) 8 değerini döndürür.

F(8.564.00) = 85464.00



Sembolik olarak, dize işlevleri aracılığıyla virgülü ve ardından StrToDouble() öğesini kaldırın.