Ich habe ..BigDecimal - wie diese Berechnung in Java tun
target = targetmax/Schwierigkeit
targetmax = 26959535291011309493156476344723991336010898738574164086137773096960
Schwierigkeit = 14484,162361
target = 26959535291011309493156476344723991336010898738574164086137773096960/14.484,162361
Ziel = 186131131 5012765306929610463010191006516769515973403833769533170
So habe ich versucht, dies in Java als
double difficulty = 14484.162361;
String targetmaxStr = "26959535291011309493156476344723991336010898738574164086137773096960";
BigDecimal targetmaxd = new BigDecimal(targetmaxStr);
BigDecimal difficultyd = new BigDecimal(difficulty);
BigDecimal targetd = targetmaxd.divide(difficultyd, MathContext.DECIMAL128);
System.out.println("target : " + targetD);
Er druckt
Ziel: 1.861311315012765229690386592708552E + 63
ich wirklich Wert erwarten:
target = 1861311315012765306929610463010191006516769515973403833769533170
Es ist kein Duplikat dieser Frage. –
@MatthewMcPeak Ich glaube wirklich, dass es ist. Die Diskrepanz wird durch die Verwendung des 'BigDecimal (double)' -Konstruktors verursacht - was diese andere Frage adressiert. –
Sie haben Recht, es ist eine Kombination von Problemen. Das Erstellen von "Schwierigkeiten" aus einem Doppel verursacht eine Ungenauigkeit, wie es die Probleme sind, auf die ich in meiner Antwort hingewiesen habe. Ich werde meine Antwort auf Vollständigkeit aktualisieren. –