Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

Vintage Turbo Pascal 7 vraagje

Pagina: 1
Acties:

  • maratropa
  • Registratie: Maart 2000
  • Niet online
hallo, hier ben ik weer eens met m'n TP gemiep...

Ik heb een tijd terug al een programma voor iemand in Turbo Pascal 7.0 geschreven. Nu geeft de output van bepaalde REAL variablelen dingen zoals:

1.4710063801E+11
of
4.3248292059E-07

Nou zou deze persoon eigenlijk meer precisie willen dus meer getallen achter de komma. (het liefst 6 getallen),Is dit uberhaupt mogelijk? Want ik heb de klok wel gezien over bitjes en bytjes enzo maar die klepel niet...
Of is dit gewoon een limitatie van de architectuur of pc etc?

specs


  • Microkid
  • Registratie: Augustus 2000
  • Laatst online: 11:56

Microkid

Frontpage Admin / Moderator PW/VA

Smile

Ik zie je probleem niet. In je voorbeeld geef je al 9 getallen achter de komma. Als je 6 getallen wilt zal je gewoon moeten afronden.

4800Wp zonnestroom met Enphase
Life's a waste of time. Time's a waste of life. Get wasted all the time and you'll have the time of your life.


  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 17-11 15:18
Volgens http://xona.com/2006/07/29.html zijn er reële types in Turbo Pascal met een grotere precisie. Als je die neemt kan het geheel een nauwkeuriger. Wat ook kan helpen is ervoor zorgen dat je je operaties op zo'n manier ordent dat je geen al te grote opeenstapeling van fouten hebt. Aftrekken van getallen van dezelfde grootteorde bijvoorbeeld is iets waardoor je 'n groute fout kan krijgen.

En op zich wordt een REAL beschouwd als zijnde tot op 6 decimalen nauwkeurig (in genormaliseerde vorm), dus de vereiste nauwkeurigheid is er eigenlijk al :).

Skat! Skat! Skat!


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

ehm het hangt wel af van wat de ts met komma bedoelt

als we het dus over een echte komma hebben en je werkt met getallan in de 10.000 den
bijv 10.123,123.445 dan mis je die preciesie wel en resulteerd dat in 10.123,123.45

Iperf


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Volgens mij kan je ongeveer zoiets doen:

Delphi:
1
WriteLn(getal:6:0);


(uit m'n hoofd) waarmee je dan zou kunnen bereiken wat ik denk dat je wilt bereiken :)

  • maratropa
  • Registratie: Maart 2000
  • Niet online
thanx, @microkid, ik bedoel nog 6 er bij dus, dus 9 + 6 getallen achter de komma

Maar van die persoon voor wie het programma was kreeg ik dus het idee dat er dus tijdens het rekenen ook precisie miste

Dus trek je een heel klein cijfer van een heel groot cijfer af of andersom; dus bij een E+11 getal en daar dan een E-07 getal bij optellen gaat er wat verloren.

@coubertin, wat ik uit je link begrijp is dat het om een soort inger gaat, terwijl ik wel rare cijfers wil kunnen invullen..

[ Voor 19% gewijzigd door maratropa op 14-07-2008 23:17 ]

specs


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

ja dat krijg je met die floating comma zooi en zal nooit helemaal weg gaan (zelfs niet bij je rekenmachienneke)

Met een 64 bit floating point 9,223,372,036,854,775,807 uit de link boven red je die preciezie net in je voorbeeld. sja en dan opereer je al op de grens.

Iperf


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
maratropa schreef op maandag 14 juli 2008 @ 23:05:
Dus trek je een heel klein cijfer van een heel groot cijfer af of andersom; dus bij een E+11 getal en daar dan een E-07 getal bij optellen gaat er wat verloren.
Dat is inherent aan IEEE floats ;)
maratropa schreef op maandag 14 juli 2008 @ 23:05:
@coubertin, wat ik uit je link begrijp is dat het om een soort inger gaat, terwijl ik wel rare cijfers wil kunnen invullen..
"Rare cijfers" :? Een zegapiljoen! Da's een raar cijfer. 3,1415926535897932384626433832795 is geen raar cijfer maar gewoon een breuk.
fish schreef op maandag 14 juli 2008 @ 23:15:
ja dat krijg je met die floating comma zooi en zal nooit helemaal weg gaan (zelfs niet bij je rekenmachienneke)
Dat hangt er maar van af hoe je het (die "zooi") beschouwd. Op een getal van zulke enorme magnitude doet een 41ste decimaal er ook vaak niet meer zo heel veel toe he? En anders ben je verkeerd bezig en moet je gewoon rekenen met je decimalen en het integer deel weglaten totdat je 'm weer nodig hebt. Vandaar ook dat de mantissa de significantie aangeeft ;) Dat piepkleine deel is gewoon niet significant genoeg.

[ Voor 65% gewijzigd door RobIII op 14-07-2008 23:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Numerieke wiskunde is lastig. 100+0.1-100 is niet slim. Beter is 100-100+0.1. Want als je maar 3 cijfers hebt, dan is 100+0.1=100. Met 9 cijfers heb je hetzelfde probleem, en met 15 ook. Meer cijfers is dus vaak niet nodig.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

RobIII schreef op maandag 14 juli 2008 @ 23:30:

"Rare cijfers" :? Een zegapiljoen! Da's een raar cijfer. 3,1415926535897932384626433832795 is geen raar cijfer maar gewoon een breuk.
(schaamteloze rip van wiki)
De wiskundige constante π is een irrationaal getal (het is zelfs transcendent). Dit houdt in dat π niet als een verhouding van twee hele getallen te schrijven is en dat in de decimale voorstelling geen zich herhalend patroon voorkomt. De waarde van π kan daarom in decimale notatie alleen benaderd worden, want de reeks cijfers achter de komma is oneindig lang.
[...]

Dat hangt er maar van af hoe je het (die "zooi") beschouwd. Op een getal van zulke enorme magnitude doet een 41ste decimaal er ook vaak niet meer zo heel veel toe he? En anders ben je verkeerd bezig en moet je gewoon rekenen met je decimalen en het integer deel weglaten totdat je 'm weer nodig hebt. Vandaar ook dat de mantissa de significantie aangeeft ;) Dat piepkleine deel is gewoon niet significant genoeg.
nou ja in dit geval net wel ... ;) de 18 decimaal ligt net op de grens

Iperf


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
fish schreef op maandag 14 juli 2008 @ 23:46:
[...]

(schaamteloze rip van wiki)
De wiskundige constante π is een irrationaal getal (het is zelfs transcendent). Dit houdt in dat π niet als een verhouding van twee hele getallen te schrijven is en dat in de decimale voorstelling geen zich herhalend patroon voorkomt. De waarde van π kan daarom in decimale notatie alleen benaderd worden, want de reeks cijfers achter de komma is oneindig lang.
Wie zegt dat ik het over pi heb? True, de eerste zoveel decimalen komen overeen, maar zie jij een … erachter staan? (leesvoer) ;) Het getal dat ik opschreef is gewoon een breuk want het houdt op na 31 decimalen terwijl je een irrationaal getal schrijft met … erachter omdat je het nooit voluit kunt schrijven (lees de 2 zinnen na 'het is zelfs transcedent' van je eigen quote maar eens ;) ). Dat het op (het begin van) pi lijkt zal ik niet ontkennen (hap hap :+ ) maar ik heb het dus niet over pi ;)

Seriously; ik deed maar een gooi en pi leek me wel een grappige. Ik had ook 2.71828182845904523536 kunnen zeggen ;) :+ spot the joke

[ Voor 35% gewijzigd door RobIII op 14-07-2008 23:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

euh .. de laatste decimalen deden er toch niet meer toe want die zijn insignifikant :+ dus dit is pi :>

maar ok back ontopic ;)

Iperf


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Dan schrijven we PI toch gewoon als een functie: PI = 4 * ATN(1) ...
PS: Zonder de "spot the joke" was (i)e een stuk subtieler geweest ;)

Maar ontopic: Volgens deze pagina heb je in Pascal de extended die een 19 bits resolutie heeft, da's 4 meer dan de bekende double ...

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SKiLLa schreef op dinsdag 15 juli 2008 @ 00:12:
Maar ontopic: Volgens deze pagina heb je in Pascal de extended die een 19 bits resolutie heeft, da's 4 meer dan de bekende double ...
Ontopic ja ;) Maar als we dan ontopic zijn: het ging er juist om dat die decimalen op zulke magnitude te insignificant zijn om er überhaupt rekening mee te houden. Alsof je de plek van een puist op een molekuul in de afstand van de zon tot aan pluto <insert_far_far_galaxy> wil bepalen :X
Als je het hebt over een 'delta' van 2 getallen die (qua integer part) niet zo heel veel verschillen dan kan het interessant zijn om op x decimalen te rekenen, en dan loont het zich om doubles of whatever te gebruiken maar dan laat je het integer-gedeelte (grotendeels) achterwege en hou je je bezig met de cijfers die significant zijn.

Al met al heeft dit weinig met TP7 te maken maar met programmeren in zijn algemeenheid; je zult in veel talen tegen dit 'probleem' aanlopen.

[ Voor 36% gewijzigd door RobIII op 15-07-2008 02:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Tja, maar van een 48 bits real naar een 80 bits extend scheelt al een hoop hoor ;)

Als 't inderdaad niet voldoet, dan zul je je tot Math libs moeten wenden (128/256 bits floats ?) of zelf de floating points moeten ontbinden in factoren (of b.v. een extend voor de komma en 1tje erachter gebruiken). Er mee rekenen wordt dan wel een stuk moeilijker, maar zoals fish (en Rob nu ook) al schreef, hoe significant is iets xxxx posities achter de komma als je er ookal xxxx posities voor hebt in dezelfde verzameling ?

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 17-11 15:18
RobIII schreef op dinsdag 15 juli 2008 @ 00:14:
[...]

Ontopic ja ;) Maar als we dan ontopic zijn: het ging er juist om dat die decimalen op zulke magnitude te insignificant zijn om er überhaupt rekening mee te houden. Alsof je de plek van een puist op een molekuul in de afstand van de zon tot aan pluto <insert_far_far_galaxy> wil bepalen :X
Als je het hebt over een 'delta' van 2 getallen die (qua integer part) niet zo heel veel verschillen dan kan het interessant zijn om op x decimalen te rekenen, en dan loont het zich om doubles of whatever te gebruiken maar dan laat je het integer-gedeelte (grotendeels) achterwege en hou je je bezig met de cijfers die significant zijn.

Al met al heeft dit weinig met TP7 te maken maar met programmeren in zijn algemeenheid; je zult in veel talen tegen dit 'probleem' aanlopen.
offtopic:
If I remember correctly, zijn de eerste dertig (of iets daaromtrent) decimalen van pi genoeg om alle berekeningen die je wenst te doen, van welke grootteorde dan ook, uit te rekenen met een fout kleiner dan een plancklengte :).

maratropa: het artikel gaat over een soort van integer, maar er staan in die screenshot ook andere types, met grotere precisie. Weliswaar 10 bytes opslag per getal, maar voor wat hoort wat :). En het is ook niet echt onoverkomelijk om zelf een library te schrijven om met grotere precisie te kunnen rekenen. Daar zouden best wel wat artikels en dergelijke over te vinden moeten zijn. Het kan natuurlijk dat er voor Turbo Pascal zelfs kant-en-klare oplossingen zijn, maar ik heb geen ervaring met Turbo Pascal.

Wel met een obscuur Pascal-dialect, Oberon :X.

Skat! Skat! Skat!


Verwijderd

coubertin119 schreef op dinsdag 15 juli 2008 @ 07:37:
Wel met een obscuur Pascal-dialect, Oberon :X.
Da's geen Pascal dialect, maar een doorontwikkeling. Na Pascal kwam Modula, en daarna Oberon. Niklaus Wirth heeft niet stilgezeten... ;)
Borland is een andere weg ingeslagen: van (Turbo) Pascal naar Object Pascal (de taal die in Delphi gebruikt wordt).

Oberon was trouwens wel erg mooi, maar wel heel erg wennen als Delphi ontwikkelaar.

  • unclero
  • Registratie: Juni 2001
  • Laatst online: 04-11 09:49

unclero

MB EQA ftw \o/

Verwijderd schreef op dinsdag 15 juli 2008 @ 12:51:
Borland is een andere weg ingeslagen: van (Turbo) Pascal naar Object Pascal (de taal die in Delphi gebruikt wordt).
Je vergeet de tussenstap, Borland Pascal ;).

* unclero is vintage software verzamelaar
(kheb een metertje aan boeken en floppen van/over Turbo en Borland producten ;))

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!


Verwijderd

Oeps, klopt. Maar ik heb zelf nooit het voordeel van BP gezien. Pas bij Object Pascal en Delphi (en Danny Thorpe's inbreng en de VCL) kwam er weer echt meerwaarde. :)

Edit: Windows 3.11 heb ik zo'n beetje overgeslagen, wel een tijd op m'n werk gebruikt (internetten met Netscape en Trumpet Winsock en zo), maar toen OS/2 2.0 uitkwam ben ik direct geswitched. :)

[ Voor 37% gewijzigd door Verwijderd op 15-07-2008 13:42 ]


  • unclero
  • Registratie: Juni 2001
  • Laatst online: 04-11 09:49

unclero

MB EQA ftw \o/

Verwijderd schreef op dinsdag 15 juli 2008 @ 13:27:
Oeps, klopt. Maar ik heb zelf nooit het voordeel van BP gezien. Pas bij Object Pascal en Delphi (en Danny Thorpe's inbreng en de VCL) kwam er weer echt meerwaarde. :)
Met BP kon je oa Windows16 (voor Windows 3.11 ;)) programma's maken :D. In die tijd een revolutie *O*.

Quelle chimère est-ce donc que l'homme? Quelle nouveauté, quel monstre, quel chaos, quel sujet de contradiction, quel prodige!

Pagina: 1