Tips

BigDecimal and rounding modes

After seeing the great success of introductory article on BigDecimal class I wanted to go on with some examples on one of the most complex operations: division. The problem… Is always the same: length :) BigDecimal, as already seen, can have an arbitrary number of decimal digits: this does not mean they can go to infinity, indeed we have at our disposal something like four billions digits, and counting. Not bad, you could argue… well let’s try this at home: how many computers are needed to store all the decimals of “1 / 3”?

Continue reading

Impossible Math

Can we trust computers calculations? Introduction IEEE 754 specification is the standard used for floating-point calculations in the engineering and scientific fields. In my humble opinion it is a perfect example of how computer industry and software development are based on a fundamental illusion of mankind: the possibility to attain and manipulate infinity (infinitely small, infinitely big, it doesn’t matter). I don’t really want to discuss the value of this standard (which is used among others by all processors and programming languages), but to explain the pain I feel looking at results like these:

Continue reading

BigDecimal

java.math.BigDecimal class represents “Immutable, arbitrary-precision signed decimal numbers” (with some limits), and has methods to operate on those numbers. Its use although is not so immediate and it is easy to do errors. In this article I’ll try to put some light on this topic, in the hope of seeing a lowering in the amount of bugs related to code using BigInteger and BigDecimal. What is it The package java.

Continue reading

Calcoli Impossibili

È possibile dubitare dei calcoli di un computer ? Un’introduzione La specifica IEEE 754 rappresenta lo standard per il calcolo in virgola mobile, cioè quello usato per i calcoli di tipo scientifico e ingegneristico; a mio parere è un’ottimo esempio di come l’industria informatica e lo sviluppo di software sia basato su un’illusione fondamentale dell’umanità: quella di poter raggiungere e manipolare l’infinito (infinitamente grande, infinitamente piccolo, non importa).

Continue reading

BigDecimal e metodi di arrotondamento

Visto il grande successo dell’articolo introduttivo sulla classe BigDecimal ho deciso di proseguire la serie con qualche esempio su una delle operazioni più complesse: la divisione. Il problema… …è il solito: le dimensioni :) BigDecimal, abbiamo detto, può avere un numero arbitrario di cifre decimali: arbitrario si, ma non infinito, infatti abbiamo a disposizione circa quattro miliardi e rotti di decimali. Non male, direte…beh allora fate questa prova: quanti computer ci vogliono per contenere tutti i decimali della divisione “1 / 3” ?

Continue reading

Bigdecimal (Ita)

La classe BigDecimal consente di utilizzare numeri a precisione decimale “arbitraria” (vedremo poi i limiti di questa definizione) e di eseguire calcoli aritmetici su di essi. Il suo utilizzo tuttavia non è immediato ed è facile commettere errori. In questo articolo si cercherà di fare un po’ di chiarezza sull’argomento, nella speranza di vedere diminuire la quantità di bug nei programmi che usano BigInteger e BigDecimal. Cos’è Il package java.

Continue reading