Controllo dei decimali

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Salve a tutti,
non riesco ad impedire che questo codice, in uno dei due casi, anziché scrivere il valore di Raggio1 o raggio2, scrive il valore giusto con una serie di 12 zeri con un "1" finale.
Codice:
        (while (= NomePunto nil)
            (setq fp2 (open "C:\\AutocadSupporto\\Intersezione\\Distanze.dat" "r"))
            (setq Raggio1 (read-line fp2))  ;; 4.52
            (setq Raggio2 (read-line fp2)) ;;  3.98
                (setq NomePunto (read-line fp2))
            (close fp2)
        );;while

        (setq PuntoDiMezzo1 (list (/ (+ (car Point1) (car Lato)) 2.0) (/ (+ (cadr Point1) (cadr Lato)) 2.0)))
        (command "_text" "_j" "_MC" PuntoDiMezzo1 0.20 0.0 (atof Raggio1) "")

        (setq PuntoDiMezzo2 (list (/ (+ (car Point2) (car Lato)) 2.0) (/ (+ (cadr Point2) (cadr Lato)) 2.0)))
        (command "_text" "_j" "_MC" PuntoDiMezzo2 0.20 0.0 (atof Raggio2) "")
Cosa posso fare per evitare questo inconveniente?
Grazie.
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Semplicemente facendo scrivere la trasformazione in valore stringa del numero:
(rtos (atof Raggio2) 2 3)
dove 2 identifica numero di tipo decimale
3 il numero di decimali
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Grazie rpor66
la soluzione dei problemi è sempre la più semplice, basta saperla!
Grazie ancora rpor66, sei grande.