AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

integer und int64 Rechnungen

Ein Thema von -=Breeze=- · begonnen am 14. Apr 2008 · letzter Beitrag vom 14. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
-=Breeze=-

Registriert seit: 14. Apr 2008
Ort: Köln
29 Beiträge
 
Delphi 7 Enterprise
 
#1

integer und int64 Rechnungen

  Alt 14. Apr 2008, 12:46
Hallo zusammen,
ich habe ein Problem bei der Benutzung von int64

Gegeben sei eine integer und eine int64 Variable:

Code:
var x : integer;
    y : int64;
begin
   x:=122;
   y:=x*x*x*x*x*x*x*x*x*x*x*x*x*x;
   Edit1.Text:=IntToStr(y);
end;
Obwohl y eine int64 ist liefert delphi mir einen negativen Wert (-1841414144).

Auch
Code:
   y:=int64(x*x*x*x*x*x*x*x*x*x*x*x*x*x);
liefert dasselbe Ergebnis.

Ich hoffe mir kann jemand helfen.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 12:50
y:=x*x*x*x*x*x*x*x*x*x*x*x*x*int64(x);

Edit:
122^13 ist doch viel größer als 2^64
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 12:52
122^14= 161.822.024.226.591.835.670.322.233.344
und übersteigt leicht den positiven Bereich von int64

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#4

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 12:56
hoi,

mach doch folg. wenns nur ums anzeigen geht

Delphi-Quellcode:
var
   x : integer ;
   y : extended ;
begin
     x := 122 ;
     y := power(x,13);
     ... := format('%f',[y]);
end;

cya
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 12:58
Trotz der Lösung noch eine Anmerkung:

Zitat von -=Breeze=-:
Code:
var x : integer;
    y : int64;
begin
   x:=122;
   y:=x*x*x*x*x*x*x*x*x*x*x*x*x*x;
   Edit1.Text:=IntToStr(y);
end;
Der erste Operand ist immernoch ein Integer, somit rechnet er mit 32 Bit.

Zitat von -=Breeze=-:
Code:
   y:=int64(x*x*x*x*x*x*x*x*x*x*x*x*x*x);
Auch hier ist der erste Operand immernoch 32 Bit, somit rechnet er das ganze immernoch mit 32 Bit Arithmetik. Da lohnt es sich dann auch nicht mehr, das Endergebnis zu casten, das ist dann schon versaut.[/quote]
  Mit Zitat antworten Zitat
-=Breeze=-

Registriert seit: 14. Apr 2008
Ort: Köln
29 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 13:00
Vielen Dank für die schnellen Antworten, da habe ich mich wohl vertan.

@soulies:
Zitat:
Undefinierter Bezeichner 'power'.

Nehmen wir an ich möchte herausfinden, wie ich die Zahlen von 97 bis 122 malnehmen muss, um 1489050905472 herauszubekommen.
Wenn ich Muetze1 da richtig verstanden habe, muss ich dafür Schleifen mit int64 Zahlen nehmen, oder?
Das geht aber nicht weil sie nicht ordinal sind...

Jemand eine Idee?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 13:02
Zitat von -=Breeze=-:
Wenn ich Muetze1 da richtig verstanden habe, muss ich dafür Schleifen mit int64 Zahlen nehmen, oder?
Nein, es reicht den ersten Operanden entsprechend als Int64 zu casten:

y := int64(x)*x*x*x*x*x*x*x*x*x*x*x*x*x;
Zitat von -=Breeze=-:
Das geht aber nicht weil sie nicht ordinal sind...
Seit wann denn dies?
  Mit Zitat antworten Zitat
-=Breeze=-

Registriert seit: 14. Apr 2008
Ort: Köln
29 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 13:06
Seitdem Delphi das mir gesagt hat
Zitat:
FOR-Schleifenvariable muß von ordinalen Typ sein
Anscheinend verstehe ich noch nicht so ganz, ich poste einfach mal meinen Code, vllt seht ihr dann was ich meine

Delphi-Quellcode:
for a:=97 to 122 do
      for b:=97 to 122 do
          for c:=97 to 122 do
              for d:=97 to 122 do
                  if a*b*c*d= <irgendeinezahl> then <Aktion>
//Edit: Ich habe aber nicht nur 4 Schleifen sonder 8-10.
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#9

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 13:10
Zitat:
@soulies:
Zitat:
Undefinierter Bezeichner 'power'.
 uses math
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: integer und int64 Rechnungen

  Alt 14. Apr 2008, 13:14
Hallo,


if Int64(a)*Int64(b)*Int64(c)*Int64(d)= <irgendeinezahl>
Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz