Аналог в c++ для NormalizeDouble

 

Здравствуйте!

Подскажите, пожалуйста, функцию для округления в c++, такую же точную, как NormalizeDouble() в MQL.

Результат SimpleRoundTo в ряде случаев не совпадает с NormalizeDouble().

Спасибо!

 
AlexanderD:

Здравствуйте!

Подскажите, пожалуйста, функцию для округления в c++, такую же точную, как NormalizeDouble() в MQL.

Результат SimpleRoundTo в ряде случаев не совпадает с NormalizeDouble().

Спасибо!

На С++ нормальный программер уж точно все свое пишет! А некоторые из них даже компиляторы.

 

Нужно, чтобы это округление не стало узким местом программы.

Быстрое округление чисел с плавающей точкой, насколько я знаю, не такая уж тривиальная задача. А в библиотеках к C++ математические функции реализованы на ассемблере.

 
AlexanderD:

Нужно, чтобы это округление не стало узким местом программы.

Быстрое округление чисел с плавающей точкой, насколько я знаю, не такая уж тривиальная задача. А в библиотеках к C++ математические функции реализованы на ассемблере.

Быстрое округление до целого (int)(double+0.5)

 
AlexanderD:

Результат SimpleRoundTo в ряде случаев не совпадает с NormalizeDouble().

Как вы пришли к выводу, что результаты не совпадают?
 

SimpleRoundTo(0.33265,-4) результат: 0.3326

NormalizeDouble(0.33265,4) результат: 0.3327

 
AlexanderD:

SimpleRoundTo(0.33265,-4) результат: 0.3326

NormalizeDouble(0.33265,4) результат: 0.3327

см. SetRoundMode

 

В большинстве случаев округляет верно, например:

SimpleRoundTo(0.33245,-4) результат:0.3325

 
AlexanderD:

SimpleRoundTo(0.33265,-4) результат: 0.3326

NormalizeDouble(0.33265,4) результат: 0.3327


Такой метод округления - если последняя пятерка, четные вниз, нечетные вверх

 

Простите, не понял Вас. Поясните, пожалуйста.

 
AlexanderD:

Простите, не понял Вас. Поясните, пожалуйста.

:-) Найдите какой-нибудь серьезный справочник по математике, почитайте про методы округления.

Причина обращения: