저는 BigDecimal을 처음 사용합니다.
Java 코드를 사용하여 수학 계산을 시도했습니다. Google 계산기를 사용하여 동일한 계산을 시도 할 때 약간 다른 결과가 나타납니다. 어느 것이 가장 정확합니까? Google 계산기가 더 정확한 경우 Java 코드를 개선하여 Java 코드와 일치시키는 방법은 무엇입니까?이 BigDecimal 계산에 문제가 있습니까?
BigDecimal t1 = new BigDecimal(134.23576185216913);
BigDecimal one = new BigDecimal(1);
BigDecimal speed = new BigDecimal(200000000).pow(2);
BigDecimal lightsSpeed = new BigDecimal(299800000).pow(2);
MathContext mc = new MathContext(2, RoundingMode.HALF_UP);
System.out.println(t1.subtract((t1.multiply(SquareRoot.bigSqrt(one.subtract(speed.divide(lightsSpeed,mc)))))));
: - (134.23576185216913 ×의 √ (1 - (200,000,000^2 299800000^2)) ÷) = 자바에 34.2357618522
134.23576185216913 : 구글 계산기에
bigSqrt의 메소드는 다음과 같습니다. here결과는
0123입니다.실행 : 34.683856455950090090043113321827989040137639817587194953722595479211000578082422197809603912048352550091209304856567024386365147605287692511973841869226169664820176852861655846233912503305984796190828666994508412096618025960010635831985100961879858807909056676663493607611105279976694118991120829708264297254294821755138400476425886154174804687500
BUILD SUCCESSFUL (총 시간 : 0 초)으로
이 가장 작은 부분이 아래로 감소하는 것이 도움이 될 수있다 여전히 어느 차이점을 보여줍니다. 예를 들어, 손실이 뺄셈에 없다고 상상해보십시오. 아마 그 조각을 제거하고 여전히 차이를 볼 수 있습니다. 가장 간단한 경우는 항상 디버그하는 것이 가장 쉽습니다. –
이벤트'BidDecimal'을 사용하더라도'double' 리터럴로 구성됩니다 :'134.23576185216913'. 정확한 변경이 바로 시작됩니다. 어디에서'134.23576185216913'을 얻을 수 있습니까? 이것이 분수로 표시 될 수 있습니까? 그것은 더 나은 결과를 낼 수 있습니다. – Nivas
그리고'SquareRoot' 클래스는 어디에서 왔습니까? – Nivas