[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 346

 
üzgünüm
 
Stepan241 >> :

Senaryonun en başında yazıyorsun

#özellik show_inputs

dış çift Parti = 0.1

bundan sonra, komut dosyasını araç penceresine ekleme anında bir iletişim kutusu görünecektir. orada ve parti büyüklüğünü girin

Anladım. Ama ihtiyacım olan bu değil. Bu komutlarla, danışmanların genel ayarları ve mevcut komut dosyasının ayarları ile bir iletişim kutusu görünecektir ve SADECE komut dosyası ayarlarıyla hemen ÖNCE görüntülemek için kullanılabilecek böyle bir işlev olup olmadığını sordum.

 
Tüm açık siparişleri belirtilen zamanda nasıl kapatacağımı söyle?
 
JackaLrus писал(а) >>

Anladım. Ama ihtiyacım olan bu değil. Bu komutlarla, danışmanların genel ayarları ve mevcut komut dosyasının ayarları ile bir iletişim kutusu görünecektir ve SADECE komut dosyası ayarlarıyla hemen ÖNCE görüntülemek için kullanılabilecek böyle bir işlev olup olmadığını sordum.

Sonra sadece MetaEditor.

 
vik-777 >> :
Tüm açık siparişleri belirtilen zamanda nasıl kapatacağımı söyle?

if (HourTime[0]=12)_CloseAllOrder

_CloseAllOrder işlevinin kendisine son sayfada veya sondan önceki sayfada bakın

 
Stepan241 >> :

if (HourTime[0]=12)_CloseAllOrder

_CloseAllOrder işlevinin kendisine son sayfada veya sondan bir önceki sayfada bakın

teşekkürler, işlev çok uygun

 

Sevgili bilenler,

Lütfen bana bu sonucun nedeninin ne olduğunu söyleyin:

öz:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

"c=3 q=2" günlüğüne yazdırır

soru: üçte ikisini nasıl alıyor?

karikatür şu ki, 0.3 yerine 0.4 veya başka bir kesir yerine geçerse beklendiği gibi çözülür

örneğin

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4" günlüğüne yazdırır

soru: üçte ikisini nasıl alıyor?

derlemeye çalışın, belki bilgisayarım nasıl sayılacağını unuttu (bir tür aptallık ...)

 
mukata >> :

Sevgili bilenler,

Lütfen bana bu sonucun nedeninin ne olduğunu söyleyin:

öz:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

"c=3 q=2" günlüğüne yazdırır

soru: üçte ikisini nasıl alıyor?

karikatür şu ki, 0.3 yerine 0.4 veya başka bir kesir yerine geçerse beklendiği gibi çözülür

örneğin

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4" günlüğüne yazdırır

soru: üçte ikisini nasıl alıyor?

derlemeye çalışın, belki bilgisayarım nasıl sayılacağını unuttu (bir tür aptallık ...)


Bu aptallık değil, gerçek sayılarla çalışırken olağan yuvarlama hataları.

ilk durumda, örneğin, çıktı yuvarlanırken c, 2.999999999'a eşit olacaktır, yani. 3 olacaktır, ancak bir tamsayı tipine atandığında, kesirli kısım atılır.

 
splxgf >> :

Bu aptallık değil, gerçek sayılarla çalışırken olağan yuvarlama hataları.

ilk durumda, örneğin c, 2.999999999'a eşit olacaktır...

2.9999'un nasıl sonuçlanacağı belli değil mi? 0.3/0.1=3 tam olarak, 1'i 3'e bölmüyorum ve bu 0.33333 olmalı...

ancak bir tamsayı tipine atandığında, kesirli kısım atılır.

tamsayı tipine c değeri atanır, c herhangi bir kesirli kısım olmaksızın açıkça üçe eşittir. atılacak bir şey yok...

cevap %100 yanlış.

başka seçenekler var mı?

 
mukata >> :


2.9999'un nasıl sonuçlanacağı belli değil mi? 0.3/0.1=3 tam olarak, 1'i 3'e bölmüyorum ve bu 0.33333 olmalı...


Sadece tam olarak görünüyor, ancak makine gösteriminde son bit farklı değerler alabilir. Onlar. 2.9999, 3 veya 3.00000001


Bu tür yanlış anlamalardan kurtulmak için MQL, NormalizeDouble() işlevine sahiptir.