몇 년 전에 저는 돈과 보험을 다루는 응용 프로그램을 작성하는 것을 도왔습니다. 처음에는 부동 소수점 숫자로 돈을 나타 냈습니다 (큰 노 - 아, 알아요). 대부분의 응용 프로그램은 값을 더하거나 뺄 때만 사용되었으므로 아무런 문제가 없었습니다. 그러나 특정 부분은 돈 가치의 비율, 따라서 곱셈과 나눗셈을 다룹니다.정수/BigInteger 대 BigDecimal을 나타내는 돈
우리는 즉시 부동 소수점 오류로 고통 받기 시작했고 주요 리펙터를해야했습니다. 우리는 그 문제를 해결 한 임의의 정밀도 라이브러리를 사용했습니다. 그러나 그것은 당신이 센트의 1 센트로 끝날 수 있다는 사실을 바꾸지 않았습니다. 네가 어떻게 돌릴 수 있니? 짧은 대답은 "it's complicated"입니다.
이제 이전 응용 프로그램을 대체하기 위해 비슷한 응용 프로그램에서 작업을 시작할 준비가되었습니다. 나는 이것을 몇 년 동안 둘러 보았습니다. 필자는 항상 정수 (또는 BigInteger
)를 래핑하여 화폐 수를 나타내는 전통적인 돈형 데이터 유형을 생성하는 것이 가장 편리하다고 생각했습니다. 이는 인간에게 친숙한 전통적인 $0.00
형식으로 인쇄하는 기능이 있습니다.
그러나 이것을 조사한 결과 최근에 구현 된 Java Money API 인 JSR 354이 발견되었습니다. 나는 그 돈이 BigDecimal
이라는 표현으로 뒷받침된다는 사실에 놀랐다. 그 때문에 반올림을위한 특정 논리가 포함됩니다.
계산에서 1 센트의 분수를 휴대하는 것이 이점은 무엇입니까? 왜 나는 1 센트가 돈의 "원자"형태라고 말하는 대신 그것을하고 싶습니까?
아니므로 나는 오늘 분수 센트 가격의 물건을 샀다. – EJP
[millage rates] (http://www.investopedia.com/terms/m/millagerate.asp?lgl=myfinance-layout)에 익숙합니까? 또는 [휘발유] 가격 (http://www.nacsonline.com/YourBusiness/FuelsReports/GasPrices_2013/Pages/Why-Is-Gas-Priced-Using-Fractions.aspx)? –