Sto cercando di eseguire l'aritmetica di sottrazione semplice su due numeri molto grandi.Conversione di notazione scientifica - Schema
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023))
Quando faccio questo, ottengo un risultato di 0.0. Mi aspetto un risultato di:
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023)) => .2439521
L'ampliata notazione scientifica mi avrebbe dato quella risposta.
183052866407243622723319,24395251 - 183052866407243622723319,00 = .2439521
Vorrei rappresentare questi numeri così come sono, con i numeri decimali in atto, al contrario di notazione scientifica, in modo da poter ottenere il risultato desiderato. C'è un modo per farlo all'interno di Scheme? Qualsiasi aiuto, guida o riferimento sarebbe molto apprezzato :)
Sto utilizzando DrRacket per Windows a 64 bit e linguaggio R5RS.
EDIT
ho pensato di essere il più specifici possibile in vista di un esempio di thearithmetic sto eseguendo.
aritmetica:
(* 271979577247970257395 0.6180339887) => 1.6809262297150285e+020
Nel fare questa stessa moltiplicazione in un calcolatore, i yeilds risultato => 168092622971502827156,7975214365
Quando si tenta di utilizzare esatto o inesatto ottengo questo:
(exact (* 271979577247970257395 0.6180339887)) => exact: undefined;
(inexact (* 271979577247970257395 0.6180339887)) => inexact: undefined;
Suppongo che R5RS non supporti esatto/inesatto? Ho guardato in su e esempi mostrano di utilizzare inexact-> procedura esatta così ho fatto e ottenuto questo:
(inexact->exact (* 271979577247970257395 0.6180339887)) => 168092622971502854144
E proprio per la specificità, ho fatto il contrario:
(exact->inexact (* 271979577247970257395 0.6180339887)) => 1.6809262297150285e+020
Allora ho provato ad utilizzare Big Float come qualcuno menzionato:
(bf-precision 128)
(bf (* 271979577247970257395 0.6180339887)) => (bf 168092622971502854144)
Dandomi la stessa uscita esatta. Tutto ciò che voglio è salvare il numero che otterrei da una calcolatrice e sembra un compito molto difficile! Mi dispiace poter sembrare stupido per non averlo capito, ma tieni a mente che sono un dilettante estremo in SCHEME. Grazie ancora per il vostro aiuto! :)
Ciao, grazie per la tua pronta risposta! Il bigfloat non mi sta dando i numeri decimali che voglio. Vedo che stai dicendo con forza le cifre decimali e poi esegui la sottrazione. Sto facendo aritmetica per recuperare il numero in virgola mobile. Aggiornerò la domanda in modo che possa mostrarti – Sixers17
Ciao. Ho aggiunto un aggiornamento, che mostra come trasformare il risultato in un numero a virgola mobile standard. – soegaard
Ho aggiunto un'alternativa all'utilizzo di bigfloats. – soegaard