Скачать MetaTrader 5

Округление чисел в МТ4 через NormalizeDouble

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Roman Starinskij
1870
Roman Starinskij 2016.01.21 10:03 

Здравствуйте. Подскажите, в чем дело.

Почему функция NormalizeDouble(0.055,2) округляет число "0.055" до "0.06"?

Это же не функция огругления дробей.

Slava
Модератор
6916
Slava 2016.01.21 10:11  

https://docs.mql4.com/ru/convert/normalizedouble

Округление числа с плавающей точкой до указанной точности.

NormalizeDouble - Документация на MQL4
  • docs.mql4.com
NormalizeDouble - Документация на MQL4
Maxim Khrolenko
7233
Maxim Khrolenko 2016.01.21 13:26  

В продолжение темы. Есть скрипт

#property strict

void OnStart()
  {
   double v1 = NormalizeDouble(0.055,2);
   double v2 = NormalizeDouble(0.0549,2);

   Print("v1 = ",DoubleToString(v1),", v2 = ",DoubleToString(v2));
  }

результат: v1 = 0.06000000, v2 = 0.05000000, а ведь в обоих случаях должно быть 0.06000000.
 

Vladimir Karputov
Модератор
49214
Vladimir Karputov 2016.01.21 13:32  
Maxim Khrolenko:

В продолжение темы. Есть скрипт

результат: v1 = 0.06000000, v2 = 0.05000000, а ведь в обоих случаях должно быть 0.06000000.
 

Округление — Википедия

Dmitry Fedoseev
43463
Dmitry Fedoseev 2016.01.21 13:49  
Roman Starinskij:

Здравствуйте. Подскажите, в чем дело.

Почему функция NormalizeDouble(0.055,2) округляет число "0.055" до "0.06"?

Это же не функция огругления дробей.

А какой, по вашему, должен быть результат?
Dmitry Fedoseev
43463
Dmitry Fedoseev 2016.01.21 13:49  
Maxim Khrolenko:

В продолжение темы. Есть скрипт

результат: v1 = 0.06000000, v2 = 0.05000000, а ведь в обоих случаях должно быть 0.06000000.
 

С какого перепуга?
Renat Akhtyamov
5083
Renat Akhtyamov 2016.01.21 14:17  
Maxim Khrolenko:

В продолжение темы. Есть скрипт

результат: v1 = 0.06000000, v2 = 0.05000000, а ведь в обоих случаях должно быть 0.06000000.
 

ну вощьпеееее....

должно быть v1=v2=0.06

Я даже и не проверял никогда... Неужели так косячит?

У Вас МТ5 или МТ4?

Dmitry Fedoseev
43463
Dmitry Fedoseev 2016.01.21 14:20  
new-rena:

ну вощьпеееее....

должно быть v1=v2=0.06

Я даже и не проверял никогда... Неужели так косячит?

С какого перепуга?
Renat Akhtyamov
5083
Renat Akhtyamov 2016.01.21 14:23  
Dmitry Fedoseev:
С какого перепуга?

Я в школе на двойки учился, но как правильно округлять запомнил ТАМ...

Если самое правое число больше или 5, тогда следующее налево +1. И т.д. сдвигаемся справа налево

Dmitry Fedoseev
43463
Dmitry Fedoseev 2016.01.21 14:25  
new-rena:
Я в школе на двойки учился, но это запомнил...

Интересненько, что за школа такая... Изложите ка ход своих мыслей. А то что-то не имею вообще никаких фантазий, как так может клинить. 

Vasyl Nosal
18632
Vasyl Nosal 2016.01.21 14:25  
Maxim Khrolenko:

В продолжение темы. Есть скрипт

результат: v1 = 0.06000000, v2 = 0.05000000, а ведь в обоих случаях должно быть 0.06000000.
 

А ты нормазни 3 символа после запятой
12345678...17
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий