mam np takie liczby
a = 23,41
b = 23,40
c = 23,47
czy jest jakas funkcja ktora
zaokrogla liczbe w gore zeby bylo:
a = 23,5
b = 23,5
c = 23,5
mam np takie liczby
a = 23,41
b = 23,40
c = 23,47
czy jest jakas funkcja ktora
zaokrogla liczbe w gore zeby bylo:
a = 23,5
b = 23,5
c = 23,5
Jest funkcja Floor(); ale ona zaokrągla zawsze do góry tylko że do liczby całkowitej.
Można oczywiście wcześniej tą liczbe odpowiednio pomnożyć np. x100 albo x1000, uzyć Floor i podzielic.
jak mam liczbe
34,4x i cokolwiek byloby za 'x' jakas liczba
to zeby liczba przed x-em byla zwiekszona
czyli:
34,76 = 34,8
37,70 = 37,8
37,98 = 38,0
34,76 = 34,8
37,70 = 37,8
37,98 = 38,0
Math.RoundTo
Piotrekdp napisał(a)
function UpperRound (Value:real):real;
var
FracInt:real;
begin
if Frac(Value)>0.40 then
begin
Fracint:=(Frac(Value)*10)-Frac(Value*10)+1;
Result:=Value-Frac(Value)+Fracint/10;
end
else Result:=Value;
end;
Jak jest mniej niż 0,4X zostawia jak było
chyba jak mnie j i równe 0,4 :)
Nie działa mi ta funkcja skleilem takie cos:
function UpperRound (Value:real):real;
var
FracInt:real;
begin
if Frac(Value)>0.40 then
begin
Fracint:=(Frac(Value)*10)-Frac(Value*10)+1;
Result:=Value-Frac(Value)+Fracint/10;
end
else Result:=Value;
end;
function RealToStr(inreal: Extended; digits: Byte): string;
var
S: string;
begin
Str(inreal: 0: digits, S);
realToStr := S;
end;
function StrToReal(chaine: string): Real;
var
r: Real;
Pos: Integer;
begin
Val(chaine, r, Pos);
if Pos > 0 then Val(Copy(chaine, 1, Pos - 1), r, Pos);
Result := r;
end;
Potem wstawilem sobie guzik i komponent edit i podpialem o guzik taki kod:
Form1.Caption := RealToStr(UpperRound(StrToReal(Edit1.Text)),2);
i jak wpisze 31.21 to nadal mam 31.21 :/ i nie wiem gdzie jest blad
function UpperRound (Value:real):real;
var
FracInt:real;
begin
Value := Value + 0.01;
Fracint:=(Frac(Value)*10)-Frac(Value*10)+1;
Result:=Value-Frac(Value)+Fracint/10;
end;
Musialem to tak przerobic i teraz sie sprawdza. DZIEKUJE