Code: Alles auswählen
1 -> 1
10 -> 2
100 -> 3
1000 -> 4
Könne dies etwas mit "log" zusammenhängen ?
Code: Alles auswählen
1 -> 1
10 -> 2
100 -> 3
1000 -> 4
Code: Alles auswählen
Uses Math;
Caption:=IntToStr(Trunc(log10(StrToInt(Edit1.text)))+1);
Code: Alles auswählen
Label1.Caption := IntToStr(length(Edit1.Text));
Es kommt darauf an, was Du als Neuzeit definierst. Logarithmen wurden nachweislich bereits im 2. Jahrhundert in Indien verwendet.wp_xyz hat geschrieben: ↑Mi 27. Sep 2023, 13:38Die Logarithmen waren eine der wichtigesten Erfindungen der Mathematik der Neuzeit. Und ohne so ein simples mechanisches Ding wie den Rechenschieber, den heute niemand mehr kennt, hätte man in der Vor-Computer-Zeit nie große Zahlen miteinander multiplizieren/dividieren können.
Code: Alles auswählen
function MyLOG10(x: integer): integer;
var
w: integer;
begin
result:=0;
w:=x;
repeat
w:=w div 10;
inc(result);
until w=0;
end;
function MyLOG10toStr(x: integer): string;
begin
result:=IntToStr(MyLog10(x));
end;
Ups, da habe ich mich ein bisschen falsch ausgedrückt.Und die Frage von Mathias habe ich mal so aufgefasst, dass die Anzahl der Stellen ermittelt werden sollte. Das muss nicht unbedingt mit Logarithmen zu tun haben ...
Ups, da habe ich mich ein bisschen falsch ausgedrückt.Und die Frage von Mathias habe ich mal so aufgefasst, dass die Anzahl der Stellen ermittelt werden sollte. Das muss nicht unbedingt mit Logarithmen zu tun haben ...
Code: Alles auswählen
float log10(float x){
//log10(x) = log(x) / log(10) = (1 / log(10)) * log(x)
const float d = 1. / log(10);
return d * log(x);
}
...
Height = log10(Height);
Code: Alles auswählen
function IntegerLength(X: Integer): Integer;
begin
//Für positive Werte reicht das hier:
Result := Length(X.ToString);
//Result := Trunc(log10(X)) + 1;
//Wenn es auch mit negativen Werten funktionieren soll:
//Result := Length(Abs(X).ToString);
//Result := Trunc(log10(Abs(X))) + 1;
end;
Kann schon sein, aber Mathias wollte eine Lösung mit "log" haben. Auf "Length" ist er wahrscheinlich auch gekommen.
Genau dies suchte ich, und es sollte mit x-beliebigen Werte funktionieren, vor allem auch mit Fliesskommazahlen.Kann schon sein, aber Mathias wollte eine Lösung mit "log" haben.
Code: Alles auswählen
function Ln(d : ValReal) : ValReal;[internproc:fpc_in_ln_real];
Code: Alles auswählen
function Log10(x : float) : float;
function Log2(x : float) : float;
function LogN(n,x : float) : float;
Bei Ganzzahlen wäre dies sicher die einfachste Lösung.Auf "Length" ist er wahrscheinlich auch gekommen.
Code: Alles auswählen
type
Float = extended;