정확한 값을 csv에 데이터베이스에 저장해야합니다. 열에 돈 값이 있습니다. 따라서 은 Money 값을 저장하기 위해 BigDecimal을 사용합니다. 예상대로 내가 얻을 출력으로 '1'Java에서 BigDecimal을 그대로 사용하여 값 인쇄
BigDecimal d=new BigDecimal(1);
System.out.println(d);
:
사례 1 :
다른 경우 다음과 같은 예를 생각해 보자.
사례 2 :
그러나 나는 그것에 진수를 추가 할 때, 나는 다른 결과를 얻을 수 있습니다.
BigDecimal d=new BigDecimal(1.1);
System.out.println(d);
나는 위의 코드에 대한 출력으로 '1.100000000000000088817841970012523233890533447265625'를 얻을.
사례 3 :
BigDecimal d=new BigDecimal(2.50);
System.out.println(d);
나는 위의 코드에 대한 출력으로 '2.5'을 얻는다. 이 경우 0을 생략합니다.
내 클라이언트는 데이터베이스에 저장하기 위해 전달 된 동일한 값을 필요로합니다. 값은 돈 관련 항목이므로 String을 사용하여 값을 저장할 수 없습니다.
그래서 Big Decimals로 전달할 정확한 값을 얻으려면 어떻게해야합니까? 이 같은
정확한 값을 원하면 double을 사용하지 마십시오. '1.1'은 두 배입니다. 대신에 "1.1"을 전달하십시오. 2.5 대 2.50에 관해서는, 이것들은 동일한 값을 나타냅니다. –
@JBNizet 왜 1.1이 double인지에 대한 문장을 추가하고 (부동 소수점 연산이라는 용어를 던짐) 자신이 대답을 가지고있다 – keyser