Как сделать округление в делфи

Добавил пользователь Евгений Кузнецов
Обновлено: 10.09.2024

Загрузка. Пожалуйста,
подождите.

Народ, как в Delphi при делении округлять до сотых в большую сторону ?

допустим срока
var
a:real;
begin
a:=(Strtoint(Edit1.text))/3;
Edit2.text:=Floattostr(a);
end;

Получилось число 2.5678998776 округлить нужно до 2.57

Репутация: нет
Всего: 62

Если речь идет именно о сотых, то сначала умножаем 2.5678998776 на 100, затем вызываем Round, который округляет до ближайшего целого, потом делим на 100, преобразуем в строку и выводим.

Репутация: нет
Всего: 118

function RoundUp(X: Extended): Extended;
begin
Result := Trunc(X) + Trunc (Frac(X) * 2);
end;

Народ что сделать нужно в моём примере с Round и параметром "a" чтобы округлял в большую сторону ? Я не знаю как пользоватся Roundом . скажите PLZ

Репутация: нет
Всего: 118

Возможно, я не прав, но если уж программировать приходится, то интересно все-таки подумать самому.

Ну к плавающему типу только Round надо привести. И все таки читайте документацию - RTFM.

Репутация: 2
Всего: 60

Цитата

var
a:real;
begin
a:=(Strtoint(Edit1.text))/3;
Edit2.text:=Floattostr(a);
end;

Вообще-то все проще: функция есть такая roundto
т.е.
Edit2.text:=Floattostr(roundto(a, -2));
Правда округлит она по правилам округления. Ежли нужно как то по другому округлить, то либо со строками работай либо проверку делай if . then.

Репутация: 48
Всего: 207

До сотых соответственно будет:

Код

Function RoundMax100(Num:real):real;
begin
result:=round(num*100+0.5)/100;
end;

Написал Edit2.text:=Floattostr(roundto(a, -2));

[Error] Unit1.pas(71): Undeclared identifier: 'roundto'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

VIT а что такое Uses Math; и где это писать ?

Репутация: 48
Всего: 207

В любом модуле есть конструкция Uses. Поищи и ты найдёшь. Там список модулей которые используются, допиши туда Math (порядок не играет значения - в любое место, через запятую)

Репутация: 2
Всего: 60

Знаешь в Delphi есть такая интересная штука: выделяешь синим (курсором мыши) неизвестную функцию и нажимаешь F1. И.. о чудо открывается хелп с синтаксисом и названием модуля в котором эта функция находится (разумеется если эта ф-ция стандартная), если нет или написана с орфографической ошибкой тогда хелп откроется на оглавлении.
Извини за сарказм, но то, что все функции паскаля записаны в каких-то модулях должен знать даже начинающий программер.

Репутация: 2
Всего: 60

Цитата

Исходный код

Репутация: 48
Всего: 207

Проще, но библиотека Math довольно тормознутая и большая, нет большого смысла прикомпиллировать её и использовать если нужна только такая мелочь, впрочем можно конечно и так.

Репутация: 2
Всего: 60

Цитата

begin
result:=round(num*100+0.5)/100;
end;

Извини, но вообще-то я думал, что это опечатка. Как ты округлишь до сотых если переменная num будет иметь больше двух знаков после запятой (я имею ввиду без roundto) а она находится в Math как не крути.

Репутация: 48
Всего: 207

function RoundStr ( Zn: Real ; kol_zn: Integer ) : Real ;
var
snl, s, s0, s1, s2: string ;
n, n1: Real ;
nn, i: Integer ;
begin
s := FloatToStr ( Zn ) ;
if ( Pos ( ',' , s ) > 0 ) and ( Zn > 0 ) and
( Length ( Copy ( s, Pos ( ',' , s ) + 1 , length ( s ) ) ) > kol_zn ) then
begin
s0 := Copy ( s, 1 , Pos ( ',' , s ) + kol_zn - 1 ) ;
s1 := Copy ( s, 1 , Pos ( ',' , s ) + kol_zn + 2 ) ;
s2 := Copy ( s1, Pos ( ',' , s1 ) + kol_zn, Length ( s1 ) ) ;
n := StrToInt ( s2 ) / 100 ;
nn := Round ( n ) ;
if nn >= 10 then
begin
snl := '0,' ;
for i := 1 to kol_zn - 1 do
snl := snl + '0' ;
snl := snl + '1' ;
n1 := StrToFloat ( Copy ( s, 1 , Pos ( ',' , s ) + kol_zn ) ) + StrToFloat ( snl ) ;
s := FloatToStr ( n1 ) ;
if Pos ( ',' , s ) > 0 then
s1 := Copy ( s, 1 , Pos ( ',' , s ) + kol_zn ) ;
end
else
s1 := s0 + IntToStr ( nn ) ;
if s1 [ Length ( s1 ) ] = ',' then
s1 := s1 + '0' ;
Result := StrToFloat ( s1 ) ;
end
else
Result := Zn;
end ;

function RoundEx ( X: Double ; Precision: Integer ) : Double ;
Precision :
1 - до целых
10 - до десятых
100 - до сотых
.
>
var
ScaledFractPart, Temp: Double ;
begin
ScaledFractPart := Frac ( X ) * Precision;
Temp := Frac ( ScaledFractPart ) ;
ScaledFractPart := Int ( ScaledFractPart ) ;
if Temp >= 0.5 then
ScaledFractPart := ScaledFractPart + 1 ;
if Temp -0.5 then
ScaledFractPart := ScaledFractPart - 1 ;
RoundEx := Int ( X ) + ScaledFractPart / Precision;
end ;

Округление дробных чисел с точностью i - количество знаков после запятой, S - дробное число в строковом виде.

function FormatData ( s: String ; i: Integer ) : String ;

Result:= FloatToStr ( Round ( StrToFloat ( s ) * exp ( i* ln ( 10 ) ) ) / ( exp ( i* ln ( 10 ) ) ) ) ;

Как округлять до сотых в большую сторону

// Прибавляешь 0.5 затем округляешь:

function RoundMax ( Num: real ; prec: integer ) : real ;

result := roundto ( num + Power ( 10 , prec - 1 ) * 5 , prec ) ;

// До сотых соответственно будет:

function RoundMax100 ( Num: real ) : real ;

result := round ( num * 100 + 0.5 ) / 100 ;

Округление дробного числа до N знаков после запятой
Автор: Perceptron

function RoundEx ( chislo: double ; Precision: Integer ) : string ;

Str ( ChisloInCurr: 20 : Precision, ChisloInStr ) ;

ChisloInStr [ Pos ( '.' , ChisloInStr ) ] := ',' ;

RoundEx := Trim ( ChisloInStr ) ;

procedure TForm1. Button1Click ( Sender: TObject ) ;

Edit1. Text := RoundEx ( StrToFloat ( Edit1. Text ) , 2 ) ;

c определенной точностью

function Rounder ( var Value: Double ; Decimals: Integer ) : Double ;
var
j: Integer ;
A: Double ;
begin
A := 1 ;
case Decimals of
0 : A := 1 ;
1 : A := 10 ;
else
for j := 1 to Decimals do
A := A * 10 ;
end ;
Result := Int ( ( Value * A ) + 0.5 ) / A;
end ;

procedure TForm1. Button1Click ( Sender: TObject ) ;
var
Value: Double ;
begin
Value := 23.56784 ;
//Result is 23.57
label1. Caption := FloatToStr ( Rounder ( Value, 2 ) ) ;
end ;

<
The function Round of the Delphi doesn't work
like it is usually expected.
The odd numbera are rounded down and the even numbers up.

Example/ Beispiel:
x:= Round(17.5) = x = 18
x:= Round(12.5) = x = 12
>
function DoRound ( const X: Extended ) : Int64 ;
begin
Result := 0 ;
if X0 then
Result := trunc ( X + 0.5 ) ;
if Xthen
Result := trunc ( X - 0.5 ) ;
end ;

procedure TForm1. Button1Click ( Sender: TObject ) ;
begin
ShowMessage ( FormatFloat ( '0.00' , DoRound ( 17.5 ) ) ) ; // - 18
ShowMessage ( FormatFloat ( '0.00' , DoRound ( 12.5 ) ) ) ; // - 13
//This rounds every value to 0.05 steps
//Rundet in 0.05 Schritten
ShowMessage ( FormatFloat ( '0.00' , Round ( 17.22 / 0.05 ) * 0.05 ) ) ; // - 17.20
end ;

<***Another function:***>
function RoundUp ( Value: Extended ) : Int64 ;
procedure Set8087CW ( NewCW: Word ) ;
asm
MOV Default8087CW,AX
FNCLEX
FLDCW Default8087CW
end ;
const
RoundUpCW = $1B32 ;
var
OldCW: Word ;
begin
OldCW := Default8087CW;
try
Set8087CW ( RoundUpCW ) ;
Result := Round ( Value ) ;
finally
Set8087CW ( OldCW ) ;
end ;
end ;
procedure TForm1. Button2Click ( Sender: TObject ) ;
begin
ShowMessage ( FormatFloat ( '0.00' , RoundUp ( 19.32 ) ) ) ; // - 19
end ;

Типы вычислений, выполняемых в Delphi для данных числового типа, можно разделить на несколько категорий, которые представлены ниже.

Операции присвоения в Delphi

Они используются для определения значения данных. В дополнение к непосредственному вводу значения в память, занятую переменной, используя ее адрес, стандартный метод присваивания заключается в использовании соответствующего оператора, как показано в примере:

Логические операции: побитовые в Delphi

Они используются для обработки данных в виде набора битов. Каждый из битов рассматривается как независимая единица, и его изменение не влияет на другие биты данных.

Символ операции Краткое описание Пример
Not Битовый Отрицание x:=not $FFFFFF00;
And Битовый Логический И x:=3 and 6;
Or Битовый Логический Или x:=3 or 6;
Xor Битовый Исключение x:=3 xor 6;
Shl Битовый Сдвиг Влево x:=3 shl 2;
Shr Битовый Сдвиг Вправо x:=12 shr 2;

Логические операции: сравнения в Delphi

Они используются для проверки, выполняется ли данное условие или нет. Это особый вид логических операций, поскольку они работают с данными, но возвращают логические значения. Допускаются следующие действия сравнения:

Символ операции Краткое описание Пример
= Равно B:=(1=1);
Больше B:=(1>-1);
> = Больше или Равно B:=(1>=-1);

Простые арифметические операции в Delphi

Они используются для манипулирования данными как определенным значением с использованием языковых операторов.

Символ операции Краткое описание Пример
+ Прибавление x:=1+2.3;
Вычитание x:=1-3.3;
* Умножение x:=2*3.4;
Div Целочисленное деление x:=5 div 3;
Mod Остаток от целочисленного деления x:=18 mod 4;
/ Деление x:=7 / 2;

Арифметические функции в Delphi

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

Функция Краткое описание Пример записи
Inc Увеличение (увеличение на 1 или на N) Inc(X); Inc(X,N);
Dec Уменьшение (уменьшение на 1 или на N) Dec(X); Dec(X,N);
Abs Абсолютное значение Abs(X);
Int Целая часть действительного числа Int(X);
Frac Дробная часть действительного числа Frac(X);
Sqr Возвращает квадрат числа Sqr(X);
Sqrt Возвращает квадратный корень числа Sqrt(X);
Power Возводит в степень Power(X, Y);
Ln Натуральный логарифм Ln(X);
LnXP1 Натуральный логарифм для X + 1 LnXP1(X);
Log2 Двоичный логарифм Log2(X);
Log10 Десятичный логарифм Log10(X);
LogN Логарифм от X по основанию B LogN(B, X);
Exp Экспонента Exp(X);
Ldexp X*2P Ldexp(X,P);
Hi Старший байт Hi(X);
Lo Младший байт Lo(X);
Sign Знак. Значение зависит от знака аргумента (-1 для X 0) Sign(X);
Round Математическое округление Round(X);
Trunc Преобразование действительного числа в целое число. Возвращает целую часть. Trunc(X);
Floor Округление до наибольшего целого, меньшего или равного аргумента Floor(X);
Ceil Округление до наименьшего целого Ceil(X);
Max Из двух приведенных чисел возвращается большее Max(X, Y);
Min Из двух приведенных чисел возвращает меньшее Min(X, Y);
MaxValue Из массива чисел возвращает наибольшее MaxValue (массив);
MinValue Из массива чисел возвращает наименьшее MinValue (массив);
MaxIntValue Из массива целых чисел возвращает наибольшее MaxIntValue (массив);
MinIntValue Из числа целых чисел возвращает наименьшее MinIntValue (массив);

Сложные операции в Delphi

Они используются для вычисления выражений посредством множества действий, выполняемых со многими данными. Примеры ниже:

Язык программирования Delphi на данный момент широко применяется для создания приложений под операционную систему Windows и не только. Знание округления чисел в данном языке является обязательной частью его освоения.

Как округлить число в delphi

  • Как округлить число в delphi
  • Как построить график в Делфи
  • Как округлить число до сотых

Округлите число в Delphi до нужного количества знаков после запятой при помощи следующей функции. В данном случае вместо x пропишите ваше дробное число, но в строчном варианте, а вместо y – необходимое число знаков после запятой.

Если вам не удобен предыдущий способ, воспользуйтесь альтернативным методом округления дробных чисел до нужного количества знаков после запятой. Оба эти метода могут быть применены в зависимости от вашего предпочтения или исходя из данных обстоятельств.

В случае возникновения каких-либо вопросов, связанных с использованием функций языка программирования Delphi, обратитесь к справочной литературе или к источникам информации в интернете. Если вы недавно начали программировать на данном языке, прочитайте литературу Нила Рубенкинга для начинающих, в ней наиболее доходчиво и понятно изложены все аспекты, касающиеся введения в курс изучения Delphi.

При выборе компилятора для языка Delphi воспользуйтесь параметрами исходной ситуации, в зависимости от нее выберите подходящее программное обеспечение. Самым распространенным и наиболее удобным в использовании считается программа Embarcadero Delphi, однако, не стоит останавливать внимание только на нем, существуют и более удобные в некотором отношении компиляторы. Также некоторые из них были специально разработаны под операционные системы GNU Linux, несмотря на то, что в данные момент Delphi поддерживает в основном платформ Microsoft. NET.

Читайте также: