Функция Round

Обсуждение Stimulsoft Reports.NET
IVC
Сообщения: 37
Зарегистрирован: 09 дек 2011, 07:11

Функция Round

Сообщение IVC »

Функция Math.Round() округляет 5 до четного, т.е. Round(20.5) = 20, Round(21.5) = 22. Есть ли параметр типа "AwayFromZero", чтобы округление 5 происходило в большую сторону?
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Функция Round

Сообщение 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
Спасибо.
IVC
Сообщения: 37
Зарегистрирован: 09 дек 2011, 07:11

Re: Функция Round

Сообщение IVC »

Спасибо, затупили сначала, потом разобрались :)
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Функция Round

Сообщение HighAley »

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

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

Спасибо.
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 10:15
Откуда: "Прорыв" Жуковский

Re: Функция Round

Сообщение Odon01 »

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

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

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

Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Функция Round

Сообщение HighAley »

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

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

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

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

Спасибо.
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 10:15
Откуда: "Прорыв" Жуковский

Re: Функция Round

Сообщение Odon01 »

Здравствуйте.
Спасибо огромное.
Andrew
Сообщения: 586
Зарегистрирован: 09 июн 2006, 12:22

Re: Функция Round

Сообщение Andrew »

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

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

Хорошего дня!
GerBert
Сообщения: 2
Зарегистрирован: 24 мар 2023, 14:53

Re: Функция Round

Сообщение 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
Aleksey
Сообщения: 2906
Зарегистрирован: 22 апр 2010, 06:57

Re: Функция Round

Сообщение Aleksey »

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

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

Спасибо.
Ответить