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 - sayfa 5

 
A100 :

Böyle ihtiyaç

ile

sonuç şuydu: 4

tam olarak 4? Haydi Yapalım şunu.

 
fxsaber :

Belki de tam olarak ihtiyacınız olan şey budur. TS yanıtladı

Tam olarak ihtiyacı olan şey bu, çünkü (doğru bir şekilde belirttiğiniz gibi) tüm sayılar çift olarak doğru bir şekilde temsil edilemez, bu da doğruluğunu belirtmeden sorunu çözmenin mantıklı olmadığı anlamına gelir (çünkü genel durumda saçma sonuçlara yol açar)

 
A100 :

Tam olarak ihtiyacı olan şey bu, çünkü (doğru bir şekilde belirttiğiniz gibi) tüm sayılar çift olarak doğru bir şekilde temsil edilemez, bu da doğruluğunu belirtmeden sorunu çözmenin mantıklı olmadığı anlamına gelir (çünkü genel durumda saçma sonuçlara yol açar)

Ve ondalık basamak sayısını değiştirmeden doğruluğu belirtmek için hangi seçenekler olabilir veya sürümümde anlattığım dezavantajı nasıl ortadan kaldırabilirim ? Kendim için sadece (string)değeri buldum

 
Alexandr Sokolov :

Ve ondalık basamak sayısını değiştirmeden kesinliği belirtmek için hangi seçenekler olabilir veya versiyonumda anlattığım dezavantajı nasıl ortadan kaldırabilirim ? Kendim için sadece (string)değeri buldum

Muhtemelen, son sıfır olmayanı aramak için hangi sınırlar içinde anlamına gelir.

 

MathMod() ile 0.1 , ardından 0.01 ...0.000(15 sıfır) 1 ile ondalık basamak sayısını hesaplamaya çalıştım, işe yaramadı, sayının doğruluğu her zaman “yüzer”, sen her seferinde normalleştirmeniz gerekir ve normalleştirme kullanıyorsanız, istenen sayıyı karşılaştırmak ve hangi işaretle normalleştirmek daha kolaydır - farklıysa, son işareti buldunuz

Not: Başka bir seçenek daha var, kontrol etmek için zamanım olmadı - tamsayı kısmı olmayan gerçek bir sayıyı 10 ^ 16 ile çarpın ve hepsini uzun süre kaydedin ve ardından 10'a bölün ve bölümün geri kalanını kontrol edin , eğer = 0, sonra tekrar bölün

 
Igor Makanu :

Not: Başka bir seçenek daha var, kontrol etmek için zamanım olmadı - tamsayı kısmı olmayan gerçek bir sayıyı 10 ^ 16 ile çarpın ve hepsini uzun süre kaydedin ve ardından 10'a bölün ve bölümün geri kalanını kontrol edin , eğer = 0, sonra tekrar bölün

Gitmeyecek.

 
DoublePoint'i kullanın ()
Ondalık logaritma , işareti atın ...
 
Aliaksandr Hryshyn :
DoublePoint'i kullanın ()
Ondalık logaritma , işareti atın ...

Ayrıca kontrol edildi, çalışmayacak.

Bu

 void OnStart ()
{
 double p = 0.07 ;
 Print (p);
} /*******************************************************************/

Bu sonucu verir

 2018.11 . 05 10 : 43 : 05.138 ! 00 (GBPJPY,H1) 0.07000000000000001
Logaritmanın ne olacağını üç kez tahmin edin ...
 
Alexey Viktorov :
Ayrıca kontrol edildi, çalışmayacak.
Niye ya? Sonra tam sayıya yuvarlayın.
 
Point() işlevinin ne döndürdüğünü görün.
Neden: