Articles of bigdecimal

ArithmeticException generata durante BigDecimal.divide

Pensavo che java.math.BigDecimal avrebbe dovuto essere The Answer ™ per la necessità di eseguire aritmetica di precisione infinita con numeri decimali. Considera il seguente frammento: import java.math.BigDecimal; //… final BigDecimal one = BigDecimal.ONE; final BigDecimal three = BigDecimal.valueOf(3); final BigDecimal third = one.divide(three); assert third.multiply(three).equals(one); // this should pass, right? Mi aspetto che l’ assert […]

Come posso analizzare una stringa su BigDecimal?

Ho questa stringa: 10,692,467,440,017,120 (è un importo). Voglio analizzarlo su un BigDecimal. Il problema è che ho provato sia DecimalFormat che NumbeFormat invano. Qualsiasi aiuto?

Formattare un BigDecimal come stringa con un massimo di 2 cifre decimali, rimuovendo 0 sulla parte decimale

Ho un numero BigDecimal e considero solo 2 posizioni decimali così lo tronco usando: bd = bd.setScale(2, BigDecimal.ROUND_DOWN) Ora voglio stamparlo come String ma rimuovendo la parte decimale se è 0, ad esempio: 1.00 -> 1 1,50 -> 1,5 1,99 -> 1,99 Ho provato a utilizzare un formattatore, formatter.format ma ottengo sempre le 2 cifre […]

MongoDB – Che dire del tipo di valore decimale?

Attualmente sto imparando e applicando MongoDB per un piccolo progetto finanziario. Quando leggo MongoDB in Action , dice: L’unico altro problema che si verifica comunemente con i tipi numerici BSON è la mancanza di supporto decimale. Ciò significa che se stai pianificando di memorizzare valori di valuta in MongoDB, devi usare un tipo intero e […]

Cosa fare con le prestazioni Java BigDecimal?

Scrivo applicazioni di trading valutario per vivere, quindi devo lavorare con i valori monetari (è un peccato che Java non abbia ancora il tipo decimale float e non abbia nulla a supporto dei calcoli monetari di precisione arbitraria). “Usa BigDecimal!” – potresti dire. Lo voglio. Ma ora ho un codice in cui le prestazioni sono […]

Java BigDecimal: arrotondato al valore intero più vicino

Ho bisogno dei seguenti risultati 100.12 -> 100.00 100.44 -> 100.00 100.50 -> 101.00 100.75 -> 101.00 .round() o .setScale() ? Come faccio a fare questo?

Converti doppio in BigDecimal e imposta BigDecimal Precision

In Java, voglio prendere un doppio valore e convertirlo in un BigDecimal e stampare il suo valore String in una certa precisione. import java.math.BigDecimal; public class Main { public static void main(String[] args) { double d=-.00012; System.out.println(d+””); //This prints -1.2E-4 double c=47.48000; BigDecimal b = new BigDecimal(c); System.out.println(b.toString()); //This prints 47.47999999999999687361196265555918216705322265625 } } Stampa questa […]

BigDecimal setScale and round

Qual è la differenza tra questa due chiamata? (C’è qualche?) // 1. new BigDecimal(“3.53456”).round(new MathContext(4, RoundingMode.HALF_UP)); // 2. new BigDecimal(“3.53456”).setScale(4, RoundingMode.HALF_UP);

Aggiunta di BigDecimals usando gli Stream

Ho una collezione di BigDecimals (in questo esempio, una LinkedList ) che vorrei aggiungere insieme. È ansible utilizzare gli stream per questo? Ho notato che la class Stream ha diversi metodi Stream::mapToInt Stream::mapToDouble Stream::mapToLong Ognuno di questi ha un metodo di sum() conveniente. Ma, come sappiamo, float e double aritmetica è quasi sempre una ctriggers […]

Metodi trigonometrici Java BigDecimal

Sto sviluppando un parser matematico che è in grado di valutare String come ‘5+b*sqrt(c^2)’ . Sto usando ANTLR per l’analisi e fare buoni progressi. Ora mi sono BigDecimal class Java BigDecimal e BigDecimal pensato: hey, perché non pensare alla precisione qui. Il mio problema è che l’API Java non fornisce metodi trigonometrici per BigDecimal come […]