Страница 1 из 4

Функция Round

Добавлено: 29 май 2013, 12:29
IVC
Функция Math.Round() округляет 5 до четного, т.е. Round(20.5) = 20, Round(21.5) = 22. Есть ли параметр типа "AwayFromZero", чтобы округление 5 происходило в большую сторону?

Re: Функция Round

Добавлено: 30 май 2013, 12:28
HighAley
Здравствуйте.
IVC писал(а):Функция Math.Round() округляет 5 до четного, т.е. Round(20.5) = 20, Round(21.5) = 22. Есть ли параметр типа "AwayFromZero", чтобы округление 5 происходило в большую сторону?
В отчётах может быть использован любой C# код. В том чисте и перегрузки метода Round() c MidpointRounding.

Код: Выделить всё

Round(20.5, MidpointRounding.AwayFromZero) = 21, Round(21.5, MidpointRounding.AwayFromZero) = 22
Спасибо.

Re: Функция Round

Добавлено: 30 май 2013, 18:48
IVC
Спасибо, затупили сначала, потом разобрались :)

Re: Функция Round

Добавлено: 31 май 2013, 15:41
HighAley
Здравствуйте.

Обращайтесь ещё, если возникнут вопросы.

Спасибо.

Re: Функция Round

Добавлено: 13 янв 2016, 10:56
Odon01
Добрый день.
Можно ли будет параметр MidpointRounding.AwayFromZero использовать по умолчанию в вашей ф-ии Round. Т.е. чтобы пользователи не писали {Round(20.5,MidpointRounding.AwayFromZero)} а сразу {Round(20.5)}.
Математически это было бы более правильно, чем то, что сейчас используется по умолчанию.

Или может добавить поведение ф-ии по умолчанию отдельной настройкой?

Клиенты наделали очень много отчетов с этой ф-ией. И все ожидали что округление будет работать математически точно. Было бы наверное очень хорошо сделать настройку IsAwayFromZeroByDefault для отчета. И по реализации это было бы несложно. По умолчанию пусть будет выключено.

Спасибо.

Re: Функция Round

Добавлено: 14 янв 2016, 12:45
HighAley
Здравствуйте.

Изменить работу функции Round() по умолчанию мы к сожалению не можем. Но мы добавили опцию для вас.

Код: Выделить всё

StiOptions.Engine.MidpointRounding = MidpointRounding.AwayFromZero;
Эта опция будет доступна в нашем сегодняшнем билде.

Спасибо.

Re: Функция Round

Добавлено: 14 янв 2016, 15:30
Odon01
Здравствуйте.
Спасибо огромное.

Re: Функция Round

Добавлено: 14 янв 2016, 16:58
Andrew
Здравствуйте,

Всегда рады помочь).

Хорошего дня!

Re: Функция Round

Добавлено: 24 мар 2023, 15:05
GerBert
Добрый день.
Подскажите, пожалуйста.
Делаю следующий вызов, для дефолтного округления в сторону от нуля AwayFromZero

Код: Выделить всё

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using Stimulsoft.Controls;
using Stimulsoft.Base.Drawing;
using Stimulsoft.Report;
using Stimulsoft.Report.Dialogs;
using Stimulsoft.Report.Components;

namespace Reports
{	
    public class Repor_1 : Stimulsoft.Report.StiReport
    {		
        public Report_1()        {
            this.InitializeComponent();
		         StiOptions.Engine.MidpointRounding = MidpointRounding.AwayFromZero;
        }
        #region StiReport Designer generated code - do not modify
		#endregion StiReport Designer generated code - do not modify
    }

}
Но в результате всё равно {Round(20.275,2)}, например округляется как 20.27, а не как 20.28

Версия дизайнера 2019.1.1

Re: Функция Round

Добавлено: 27 мар 2023, 21:45
Aleksey
Здравствуйте,

Используйте следующее выражение:
{Round(20.275m,2)}

Спасибо.