Devo convertire un float in decimale (28,10) in SQL Server. Il mio problema è che, a causa della natura del float e del modo in cui vengono eseguite le conversioni, il semplice lancio del float potrebbe far apparire il numero sbagliato ai miei utenti.Converti virgola mobile in virgola mobile (SQL Server)
Ad esempio:
Float: 280712929.22
Cast as Decimal: 280712929.2200000300
What I think I want: 280712929.2200000000
ho capito un po 'sulle opere float modo (che si tratta di un tipo di dati approssimativi, ecc), ma certamente non abbastanza per capire il motivo per cui si aggiunge il 300 alla fine. È semplicemente immondizia come un effetto collaterale della conversione, o è in qualche modo una rappresentazione più accurata di ciò che il float effettivamente memorizza? A me sembra che abbia tirato fuori la precisione dal nulla.
In definitiva, ho bisogno che sia accurato, ma anche di guardare "giusto". Penso di aver bisogno di ottenere quel numero minimo, poiché sembra che abbia appena aggiunto zero finali. È possibile? Questa è una buona o cattiva idea, e perché? Altri suggerimenti sono benvenuti.
Alcuni altri esempi:
Float: 364322379.5731
Cast as Decimal: 364322379.5730999700
What I want: 364322379.5731000000
Float: 10482308902
Cast as Decimal: 10482308901.9999640000
What I want: 10482308902.0000000000
Nota a margine: la nuova tabella di database che sto mettendo questi valori in è leggibile da mio utente. In questo momento hanno solo bisogno di due cifre decimali, ma potrebbe cambiare in futuro, quindi abbiamo deciso di utilizzare Decimal (28,10). L'obiettivo a lungo termine è quello di convertire le colonne float da cui ottengo i miei dati anche in decimali.
MODIFICA: A volte i float che ho hanno più cifre decimali di quanto io abbia mai bisogno, ad esempio: -0.628475064730907. In questa situazione il cast a -0.6284750647 va bene. Fondamentalmente ho bisogno del mio risultato per aggiungere zero alla fine del float fino a che non ho 10 cifre decimali.
Forse ho trovato la risposta. http://stackoverflow.com/questions/34316871/how-can-the-following-result-of-casting-from-float-to-numeric-be-explained –