• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Wie die wissenschaftliche Notation zu vermeiden

  • Ersteller Ersteller Gio_S
  • Erstellt am Erstellt am

Gio_S

Guest
Hallo alle,
Ich werde verrückt. Ich schreibe auf Dateien, aber für meine Bequemlichkeit der Analyse möchte ich schreiben immer Zahlen in dezimaler Notation.
Stattdessen, wo zum Beispiel es Rotation gab, und die Zahl immer von der mobilen Komma angenähert, finde ich in der Mitte der Datei einige Zahlen in der wissenschaftlichen Notation.
Und doch benutze ich alle Tricks. .
Ich wiederhole die Einstellungen, die ich bereits standardmäßig halte (setvar "lunits" 2) (Setvar "luprec" 8). .
Ich verspreche, so in String umzuwandeln, zum Beispiel (Rekte xn 2 8)aber nichts zu tun! Jetzt und dann nimmt er mich raus. 4.44089210- 16 Und so!
Ich würde gerne fragen... Nenne ich etwas oder mein Autolisp auf Intellicad auf diesem Ding ist klamourös verwundet?
Danke!
Röcke
 
in autolisp:"....die realen Zahlen werden im doppelgenauen mobilen Komma-Format gespeichert, mindestens 14 signifikante Präzisionsfiguren, trotz Compaiano solo 6 im autocad Kommandozeilenbereich."also, wenn Sie sie anzeigen müssen, können Sie rtos verwenden, während in Berechnungen für Sie nichts ändert, wenn in Variablen gespeichert 1.0e-05 statt 0.00001
 
in autolisp:"....die realen Zahlen werden im doppelgenauen mobilen Komma-Format gespeichert, mindestens 14 signifikante Präzisionsfiguren, trotz Compaiano solo 6 im autocad Kommandozeilenbereich."also, wenn Sie sie anzeigen müssen, können Sie rtos verwenden, während in Berechnungen für Sie nichts ändert, wenn in Variablen gespeichert 1.0e-05 statt 0.00001
Richtig! Das ist mein Problem, rtos gibt mir einen String in der wissenschaftlichen Notation, auch wenn ich mit dem Thema rtos die dezimale Notation frage.
Ich weiß an dieser Stelle nicht, ob es ein Fehler meiner Lispe ist oder ob es verallgemeinert ist, in dem Sinne, dass, wenn der Punkt aber viele Dezimale hat (vor allem durch die Operationen in mobilen Komma), die Lispe mich immer noch in der wissenschaftlichen Notation zurückkehrt.
Diese Sache bringt mich hinter all dem Problem der Float-Operationen, die mit einem Satz von Dezimals angenähert werden, und stört mich in den Vergleichen zwischen Strings.Beispiel:Wenn Sie einen Würfel mit den Tops ziehen, die immer auf Koordinaten zwischen 0 und 1 (Vollzahlen) platziert sind, haben Sie saubere Koordinaten. Ich habe den einfachsten Beispielfall gemacht.
aber wenn Sie ein Gesicht zeichnen 0,0,0 - 0,1,0 - 1,1,0,0 (Integer-Nummern) und von diesem ersten Gesicht Cop und Ruoti Gesichter, um den Würfel zu schaffen, wegen der Operationen in mobilen Komma, einige (inside) gehen zu segnen, vor allem in der Berechnung der Normalen, und Sie erhalten statt Dezimals wie aus zurück immer wissenschaftliche Notation, auch wenn ich es nicht in Textdateien will.
der einzige Weg (Scomodo) ist es, in dxf nur wenige Dezimale (typischerweise frage ich 6) zu speichern, und an dieser Stelle wird der Schwimmer geschrumpft und zurück zur Zeichnung mit den sauberen Punkten.
das gleiche, was ich mit dem rtos Argument bekommen konnte, das acht Dezimals fragt, wenn dieses Argument mich jedoch nicht ignorierte und mir immer noch die mobile Komma gab.
Es ist kompliziert zu erklären, obwohl das Konzept einfach ist.
 
Du meinst, ich habe den Trick gefunden? ohne die Transformation doppelte interne Carpiata funktioniert nicht, aber damit scheint es
Code:
 (defun clea(a)
(zwischen a)
(zwischen (* zwischen 1000)
(Fix zwischen)
(setq hh (rtos zwischen 2 8) ; notwendig!
(Einsatz zwischen (von hh)
(wenn (= zwischen 0)(Setq zwischen 0,0000001))
(Satz zwischen (/ zwischen 1000)
)
im Wesentlichen wird daher jeder zu schreibende Wert zunächst so verarbeitet,
(Clear ax)(setq ax tra)
(Clear ay)(setq ay tra)
(clea az) (setq az tra) .... und exponentielle Notation verschwindet zugunsten des Rundens
 
ps ... es gibt einen Witz in der Mitte, um die Division durch Null in der Berechnung zu vermeiden, die machen, um die Vektoren der normalen
 
den Code, der verbessert wurde, finde ich es wichtig für 3d-Druck und Renderings.
Ich antworte, weil.
bei dieser Art von Zeichnungen besteht die Notwendigkeit, daß die von diesen Programmen verwendeten Punkte, wenn sie gleich sie sind wirklich, während der Cad, nach Operationen in mobilen Komma (typischerweise Rotationen) Kompromisse seine Integrität.
auch hier auf dem Forum las ich Thema, das das Problem für Elemente mit nicht-perfekten Zufall berichtete.
Ich werde es erklären, in einem Mesh stl a x = 13.7865000 ist überhaupt nicht gleich 13.7864999, erzeugt im Cad durch mobile Komma-Operationen, und wenn das Druckprogramm oder es zu Recht findet sie anders, kann es falsche Rückschlüsse auf die Integrität des Netzes ziehen.
mein Problem war nicht nur dies, sondern auch (siehe Thema Titel) nicht exponentielle Notation, die Cad propinatiert mich gelegentlich zum Schreiben von Dateien, auch wenn mit rtos ich erklären, dass Ich will nicht. (erste Option angegeben zu "zwei" (dezimale Note).

die einzige Möglichkeit, es zu vermeiden war, vorübergehend die Komma von drei Orten zu bewegen. wenn ich 4, mit den *10000 dann zurück zu / 10000, nichts zu tun die Notation "und" stand heraus.
Ich stamme den Schwimmer (mit den * und / nur bis 1000) genau zu drei Dezimals, aber dass ich definitiv genug bin, sowohl auf den 3d-Druckarbeiten, wo meine Einheit um den Assumo am Millimeter zu messen, sowohl für die Architektur, wo ich den Zähler nehme, und ich bin sicherlich nicht um das Zehntel eines Millimeters kümmern.

aber es gibt eine andere Frage, die autolisp gekürzt fix, nicht rund.
Ich möchte vielmehr auf drei Dezimals nach dem Komma reduzieren, die ich dem Runden annähern möchte Nähere InformationenUnd nicht kurz. und ich habe daher die Routinen hinzugefügt, die ich für angemessen halte, da die runde Funktion im klassischen Autolisp nicht da ist.
so diese Funktion... dass jetzt ohne Fehler zu handeln scheint.

Es ist wahrscheinlich redundant, aber ich bevorzuge, und übrigens weiß ich nicht, ob ich das Konzept gut verstanden habe, aber es berührt mich "um das Argument, dass ich an die Funktion von einer internen Variable an die Funktion weitergeleitet habe, zurückzunehmen, weil (ich weiß nicht, ob ich falsch bin) aber der Defun hält nur fest. in locale Die Veränderungen, die ich ihm an das Thema mache, das ich durchgemacht habe.
Wenn ich aus den Toten komme, finde ich es als solche und als ich es an den Ursprung weitergegeben habe. von hier aus, deshalb nehme ich von der "zwischen" in den Toten den neuen Wert lokal verarbeitet. und ich muss es dem Thema geben.
Ich weiß nicht, was du eleganter machen kannst. falls es eine Methode der am meisten gesendeten Art danke gibt...
Ich meine den toten Typ, den ich rufe(x) ... und out x enthält den neuen Wert, den ich in meinem Namen berechnet habe.
Ich war nicht erfolgreich, die x-Variationen bleiben immer lokal zur Funktion. .
Code:
 (defun clean(a)
(zwischen a)
(zwischen (* zwischen 1000)
(zwischen gesetzt)
(setq hh (rtos zwischen 2 3))
(Einsatz zwischen (von hh)
(Satz zwischen (/ zwischen 1000)
; rundes Verfahren
(falls) zwischen 0 und positiv
(Progn)
(- zwischen)
(falls) diff
(zwischen (+ 0.001))
)
)
(Progn)
(- zwischen)
(falls (< diff -0.000)
(zwischen (- zwischen 0,001))
)
)
)
); Ende defun sauber
im Haupt, jeder verarbeitete Wert, nach dem Aufruf zu den Toten, muss ich es von "tra", verarbeitet innerhalb der Funktion auf einer Kopie von ax, und es dem Thema zuordnen
(sauber ax)
(Einsatz ax zwischen)
aber wie ich sagte, ich kann nichts anderes tun, weil das ax-Argument durch die Funktion geändert wird, sondern nur als lokale Variable.
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben