classico/rechenbefehl
Bernhard Eversberg
ev at buch.biblio.etc.tu-bs.de
Do Dez 11 08:29:41 CET 2003
On 11 Dec 03, at 7:06, Manfred Weichert wrote:
> der Exportbefehl:
> #dt y0 p"9,51" e3 =z1 e0
> #uz1 y0 x"r0"
>
> erzeugt die Ausgabe "1", nicht wie erwartet "10".
> So das Ergebnis für alle Werte zwischen 9,5 und 9,9.
> Das Abrunden (10<z1<10,4) klappt.
> Liegt es an der älteren (1999) Version von allegro.exe mit der ich
> arbeite. Oder wird das Rechnen mit presto (hier Version März
> 2003) gemacht?
>
Zuerst: allegro.exe hat hiermit nichts zu tun! Es kann geloescht werden, denn es
ist ein veraltetes Programm von nur noch historischem Wert, und im Gesamtpaket
nicht mehr erhalten. (Verwechseln Sie nicht den Namen "allegro.exe" mit dem
Begriff "allegro-C"!) Die in Frage stehende Arbeit wird allein von presto.exe
gemacht.
Aber zum Problem: in der Tat, und das war noch nie aufgefallen, muss hier ein
Fehler des fuer "classico" verwendeten Compilers vorliegen. Denn a99 macht diesen
Fehler nicht, der dahinter steckende C-Programmcode ist aber voellig identisch.
Ich fuerchte, da koennen wir nichts machen! Passieren tut es nur beim Runden auf
ganze Zahl, wenn die sich ergebende Zahl dann am Ende eine 0 hat. Die nimmt das
Programm weg. Wenn 100 rauskommt, macht es 10 draus. Wie gesagt, Compilerfehler,
da koennen wir nichts gegen tun. Sehr seltener Fall. Einen anderen Compiler
finden, das wird nicht mehr moeglich sein bei den alten Programmen, der Aufwand
fuer die Umstellung und das Testen waere viel zu hoch.
Wenn aber wirklich und unbedingt mit presto eine Rundung auf ganze Zahl gemacht
werden soll, kann man zu diesem Trick greifen (soeben getestet):
#uz1 y0 x"/10" x"r1" x"*10" e"." statt #uz1 y0 x"r0"
also erst Division durch 10, dann Rundung auf eine Kommastelle, dann
Multiplikation mit 10, dann Abschneiden am Punkt. Aechz...
Oder a99 einsetzen.
B.E.
Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329,
D-38023 Braunschweig, Germany
Tel. +49 531 391-5026 , -5011 , FAX -5836
e-mail B.Eversberg at tu-bs.de
Mehr Informationen über die Mailingliste Allegro