大家好,我有下一个问题:我必须对大的小数进行求和,休息,除法和乘法:14578541254,45874455874。因此,我的解决方案着眼于Java中的double linkelist,因此我实现了诸如:Node,ListNode等类。我需要多重帮助。如何将两个列表相乘或除以一个大十进制数?如何处理?提前致谢。
public class Nodo {//class Node
private Object digito;
private Nodo siguienteNodo; //NextNode
private Nodo anteriorNodo; //Node Before
public Nodo(Object digito) {
this.digito = digito;
this.siguienteNodo = null;
this.anteriorNodo = null;
}
/* cuerpo del constructor sin args */
public Nodo() {
}
/* getters y setters */
}
public class ListaCirculaDoblementeEnlazada {
/* Node de Start y Finish /
private Nodo inicio;
private Nodo fin;
private int tamanio;//size of the list
private ListaCirculaDoblementeEnlazada() {
inicio=null;
fin=null;
tamanio=0;
}
public boolean esVacia(){
return inicio == null;
}
public int getTamanio(){
return tamanio;
}
//List Nodes
public void listar(){
// Verifica si la lista contiene elementoa.
if (!esVacia()) {
// Crea una copia de la lista.
Nodo aux = inicio;
// Posicion de los elementos de la lista.
int i = 0;
// Recorre la lista hasta el final.
while(aux != null){
// Imprime en pantalla el valor del nodo.
System.out.print(i + ".[ " + aux.getDigito() + " ]" + " -> ");
// Avanza al siguiente nodo.
aux = aux.getSiguienteNodo();
// Incrementa el contador de la posión.
i++;
}
}
}
//Add to the end
public void agregarAlFinal(String valor){
Nodo nuevo = new Nodo();
nuevo.setDigito(valor);
if (esVacia()) {
inicio = nuevo;
fin = nuevo;
inicio.setSiguienteNodo(fin);
inicio.setAnteriorNodo(fin);
fin.setSiguienteNodo(inicio);
fin.setAnteriorNodo(inicio);
} else{
nuevo.setAnteriorNodo(fin);
nuevo.setSiguienteNodo(inicio);
fin.setSiguienteNodo(nuevo);
inicio.setAnteriorNodo(nuevo);
fin=nuevo;
}
tamanio++;
}
//Add to the begin
public void agregarAlInicio(String valor){
Nodo nuevo = new Nodo();
nuevo.setDigito(valor);
if (esVacia()) {
inicio = nuevo;
fin = nuevo;
inicio.setSiguienteNodo(fin);
inicio.setAnteriorNodo(fin);
fin.setSiguienteNodo(inicio);
fin.setAnteriorNodo(inicio);
} else{
nuevo.setSiguienteNodo(inicio);
nuevo.setAnteriorNodo(fin);
fin.setSiguienteNodo(nuevo);
inicio.setAnteriorNodo(nuevo);
inicio=nuevo;
}
// Incrementa el contador de tamaño de la lista.
tamanio++;
}
}
最佳答案
如果我正确理解您的问题...
使用Java's BigDecimal类而不是自己实现。
BigDecimal a = new BigDecimal("14578541254");
BigDecimal b = new BigDecimal("45874455874");
BigDecimal result = a.multiply(b);