Voglio passare da Java a un linguaggio di scripting per i moduli basati su Math nella mia app. Ciò è dovuto alla leggibilità e ai limiti funzionali di Java math.Scala e Java BigDecimal
Per es, in Java ho questo:
BigDecimal x = new BigDecimal("1.1");
BigDecimal y = new BigDecimal("1.1");
BigDecimal z = x.multiply(y.exp(new BigDecimal("2"));
Come si può vedere, senza BigDecimal overloading degli operatori, formule semplici si complicano reale veloce.
Con il doppio, questo sembra buono, ma ho bisogno della precisione.
Speravo in Scala avrei potuto fare questo:
var x = 1.1;
var y = 0.1;
print(x + y);
E di default che avrei avuto un comportamento simile decimale, ahimè Scala non usa il calcolo decimale per difetto.
Poi faccio questo a Scala:
var x = BigDecimal(1.1);
var y = BigDecimal(0.1);
println(x + y);
E io ancora ottenere un risultato impreciso.
C'è qualcosa che non sto facendo bene in Scala?
Forse dovrei usare Groovy per massimizzare la leggibilità (utilizza i decimali per impostazione predefinita)?
Sei * veramente * sicuro che l'utilizzo di BigDecimal è la cosa giusta da fare? Che tipo di calcoli stai facendo? –
Non riesco a verificare il problema con BigDecimal in Scala. Funziona come previsto almeno nella 2.8.1 – gerferra
var x: BigDecimal = 11.0 dovrebbe essere esatto e x = x/10.0 dovrebbe essere felice. – ChuckCottrill