Страница 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)}
Спасибо.