Il problema è qui confondendo il problema del tipo decimale in accesso e quello dei valori in virgola mobile di tipo singolo e doppio disponibili in accesso.
Se si utilizza il tipo di dati di valuta in accesso, questo è un numero intero in scala e non produce arrotondamenti (questo è ciò che la maggior parte di noi utilizza per calcoli e report finanziari). Puoi anche usare valori decimali in accesso, e di nuovo non arrotondano affatto perché sono imballati in decimali.
Tuttavia, sia i valori singoli sia quelli double disponibili all'interno dell'accesso sono in effetti dello stesso formato e sono conformi allo standard IEEE in virgola mobile.
Per una singola variabile di accesso, questo è un numero a 32 bit, e la gamma è:
-3.402823E38
to
-1.401298E-45 for negative values
e
1.401298E-45
to
3.402823E38 for positive values
Questo sembra essere lo stesso per me come lo standard IEEE 754.
Pertanto, se si sommano i valori dell'accesso come singolo, è necessario ottenere gli stessi risultati.
Quindi, Intel basato e accesso singolo e doppio credo siano gli stessi di questo standard IEEE.
L'unico vero problema e qui è qual è il formato dei dati originali che si stanno inserendo in accesso e quali tipi di testo o stringa o processo di conversione si verificano quando tali dati vengono estratti e memorizzati?
L'accesso può convertire i numeri. Provate a digitare questi valori al prompt dei comandi di accesso (finestra di debug)
? hex(255)
Above will show FF
? csng(&hFF)
Above will show 255
Edit:
Ah, ok, lo vedi ora ho questo invertito, il mio male qui. Il problema qui è che, supponendo che si converta un numero nel vecchio formato IBM (Excess 64?), Si dovrà quindi mettere le mani sul proprio codice che hanno usato per aggiungere quei numeri. Infatti, anche allora, diversi modelli IBM a seconda di ciò che hai acquistato produceva effettivamente risultati diversi (più soldi = più precisione).
Quindi, non solo avete bisogno di routine di conversione per convertire la rappresentazione interna, quindi avete bisogno delle routine che aggiungono/sottraggono/moltiplicano quei numeri. Quindi, avere solo routine di conversione non ti porterà molto lontano, dal momento che devi anche duplicare le loro routine esatte che fanno matematica. Questi tipi di routine probabilmente non sono tutti uguali in termini di numeri arrotondati, ecc.
Sei sicuro che il report sull'IBM utilizzato a virgola mobile? La maggior parte di questo genere di cose utilizzava il BCD. – Gabe
Non sono sicuro al 100% - questa determinazione era basata su un collega che ricorda un programmatore di mainframe che spiegava anni fa che il motivo per cui non possiamo abbinare i dati più vecchi è dovuto a "cambiamenti nel modo in cui il compilatore gestisce le posizioni decimali", e documentazione che SAS ha aggiunto il supporto per IEEE in virgola mobile a fianco di IBM in virgola mobile un paio di anni prima di smettere di vedere le incongruenze. –
Il formato BCD non era un formato a virgola mobile O non nel mondo dei mini-computer IBM S/34, S/36 e S/38 nei tardi anni '70 e '80. http://en.wikipedia.org/wiki/Binary-coded_decimal –