Używam commons-matem 3.6.1.Zaokrąglanie w matematyce podwójne
muszę zaokrąglić podwójnej wartości 2 przecinku
Przyjmijmy to moja podwójna wartość:
double d = 400.54540997260267;
Teraz przez zaokrąglenie tej liczby Spodziewałem się jako rezultat 400.54
Zamiast jeśli mój numer był podwójny d1 = 400.54640997260267;
Spodziewałem się wyniku 400.55
Teraz jestem śpiewać ten kod:
Precision.round(d, 2, BigDecimal.ROUND_DOWN);
Jeśli używam jako roundingMethod BigDecimal.ROUND_DOWN
zawsze uzyskać najniższą zaokrąglenia. Jakiego rodzaju metody zaokrąglania należy użyć, aby uzyskać to, czego szukałem?
Dziękuję Angelo
UPDATE
Nie undestand przyczynę downvoting Próbowałem poniższy kod:
public class TestCalcoli
{
private static final Logger logger = LoggerFactory.getLogger(TestCalcoli.class.getName());
private void calc(double d)
{
double result = Precision.round(d, 2, BigDecimal.ROUND_HALF_DOWN);
double result2 = Precision.round(d, 2, BigDecimal.ROUND_HALF_UP);
logger.info("d--> "+d+" result --> "+result+" result2 --> "+result2);
}
@Test
public void calcola()
{
try
{
double d = 400.54540997260267;
double d1 = 400.54640997260267;
calc(d1);
calc(d);
}
catch (Exception e)
{
logger.error("errore", e);
}
}
}
CONSOLE wyjściowa:
2017-07-31 09:29:44,608 317 [main] INFO i.e.c.r.pwb.test.TestCalcoli - d--> 400.54640997260265 result --> 400.55 result2 --> 400.55
2017-07-31 09:29:44,612 321 [main] INFO i.e.c.r.pwb.test.TestCalcoli - d--> 400.54540997260267 result --> 400.55 result2 --> 400.55
Wszystkie sugerowane odpowiedzi nie daje mi wynik Spodziewałem się więc czy istnieje coś mi brakuje lub wszystkie podane odpowiedzi nie były trochę zbyt pochopnie
Zapewnienie kodu zdecydowanie pomaga, ale byłoby lepiej jako prosta aplikacja konsolowa z metodą "główną", aby była * trywialna * do uruchomienia (nie trzeba uruchamiać środowiska testowego) - i zawierała wyniki vs oczekiwane wyniki dla każdego z przypadków testowych. –