Ich bin gerade dabei eine Methode anstatt einem double einen BigDecimal zu verwenden.
Gerundet soll werden nach:
RoundingMode.HALF_EVEN
Scale = 6
LocalDateTime tempDate = 2020-11-13T00:00;
Local updateDate = 2020-11-14T11:06;
int totalMonths = 3;
Habe folgendes probiert:
Herauskommen soll: 0.2540625 (laut double)
Rausbekommen tue ich aber: 0.024896
Anschließend würde ich gerne den oberen Wert von 1 abziehen also:
Womit dann 0.745937 rauskommen soll.
Jemand eine Idee, was ich falsch mache?
Gerundet soll werden nach:
RoundingMode.HALF_EVEN
Scale = 6
LocalDateTime tempDate = 2020-11-13T00:00;
Local updateDate = 2020-11-14T11:06;
int totalMonths = 3;
Java:
long totalMinutes = Duration.between(tempDate, updateDate).toMillis() / 1000;
long maxMinutes = YearMonth.of(tempDate.getYear(), tempDate.getMonthValue()).lengthOfMonth() * 24 * 60 * 60;
result = (((double) totalMonths) / 12)
+ (((double) totalMinutes) / ((double) maxMinutes)
/ 12));
Habe folgendes probiert:
Java:
BigDecimal c1 = (new BigDecimal(totalMonths)).divide(new BigDecimal(12), 6, RoundingMode.HALF_EVEN);
BigDecimal c2 = new BigDecimal(totalMinutes).divide(new BigDecimal(maxMinutes), 6, RoundingMode.HALF_EVEN);
BigDecimal c3 = new BigDecimal(12);
BigDecimal test = ((c1).add(c2)).divide(c3, 6, RoundingMode.HALF_EVEN);
Herauskommen soll: 0.2540625 (laut double)
Rausbekommen tue ich aber: 0.024896
Anschließend würde ich gerne den oberen Wert von 1 abziehen also:
Java:
double usedValue = Wert von oben;
result = 1-usedValue;
Womit dann 0.745937 rauskommen soll.
Jemand eine Idee, was ich falsch mache?