Articles of floating point

Cosa fa realmente gf’s ffast-math?

Capisco che il –ffast-math di gcc –ffast-math può aumentare notevolmente la velocità per le –ffast-math e va oltre gli standard IEEE, ma non riesco a trovare informazioni su ciò che sta realmente accadendo quando è acceso. Qualcuno può spiegare alcuni dettagli e magari dare un chiaro esempio di come qualcosa cambierebbe se la bandiera fosse […]

Perché questa sottrazione non è uguale a zero?

Mi sono imbattuto in questi valori nel mio codice ColdFusion ma il calcolatore di Google sembra avere lo stesso “bug” in cui la differenza è diversa da zero. 416582.2850 – 411476.8100 – 5105.475 = -2.36468622461E-011 http://www.google.com/search?hl=en&rlz=1C1GGLS_enUS340US340&q=416582.2850+-+411476.8100+-+5105.475&aq=f&oq=&aqi= JavaCast’ing questi a long / float / double non aiuta – si traduce in altre differenze diverse da zero.

Perché non possiamo usare ‘==’ per confrontare due numeri float o double

Sto leggendo Efficace java di Joshua Bloch e nell’articolo 8: Rispetto al contratto generale quando si esegue l’override uguale , questa affermazione è scritta per i campi float, utilizzare il metodo Float.compare; e per i campi doppi, utilizzare Double.compare. Il trattamento speciale dei campi float e double è reso necessario dall’esistenza di Float.NaN, -0.0f e […]

lungo doppio contro doppio

So che la dimensione dei vari tipi di dati può cambiare a seconda del sistema in cui mi trovo. Io uso XP a 32 bit, e usando l’operatore sizeof () in C ++, sembra che il doppio lungo sia 12 byte, e il doppio è 8. Tuttavia, la maggior parte delle fonti principali afferma che […]

Confronto a virgola mobile con variabile in bash

Voglio confrontare una variabile in virgola mobile in un intero. So che questo non è il migliore da fare con bash, ma il mio intero script è già scritto in bash. Il numero $ può essere qualsiasi intero. Se è inferiore o uguale a 50, voglio output1, per tutti gli altri voglio un output con […]

Manipolazione e confronto di punti mobili in java

In Java l’aritmetica in virgola mobile non è rappresentata con precisione. Ad esempio questo codice java: float a = 1.2; float b= 3.0; float c = a * b; if(c == 3.6){ System.out.println(“c is 3.6”); } else { System.out.println(“c is not 3.6″); } Stampa “c non è 3.6”. Non mi interessa la precisione oltre i […]

Doppio calcolo che produce un risultato dispari

Ho 2 numeri memorizzati come Double, 1.4300 e 1.4350. Quando sottraggo 1.4350 – 1.4300, mi dà il risultato: 0.0050000000000001155. Perché aggiunge 1155 alla fine e come posso risolverlo in modo che restituisca 0,005 o 0,0050? Non sono sicuro che l’arrotondamento funzionerà poiché sto lavorando con 2 e 4 numeri decimali.

Troncare (non arrotondare) i numeri decimali in javascript

Sto cercando di troncare i numeri decimali in posizioni decimali. Qualcosa come questo: 5.467 -> 5.46 985.943 -> 985.94 toFixed(2) fa esattamente la cosa giusta ma completa il valore. Non ho bisogno del valore arrotondato. Spero che questo sia ansible in javascript.

Perché (360/24) / 60 = 0 … in Java

Sto cercando di calcolare (360/24) / 60 Continuo a ricevere la risposta 0.0 quando dovrei ottenere 0.25 A parole: voglio dividere 360 ​​per 24 e poi dividere il risultato per 60 public class Divide { public static void main(String[] args){ float div = ((360 / 24) / 60); System.out.println(div); } } Questo stampa: 0.0 Perché? […]

Java: Perché dovremmo usare BigDecimal invece di Double nel mondo reale?

Quando si tratta di valori monetari del mondo reale, mi viene consigliato di utilizzare BigDecimal anziché Double. Ma non ho una spiegazione convincente, ad eccezione di “Normalmente è fatto in questo modo”. Puoi per favore chiarire questa domanda?