decimal

· Language/Go
Go 서버에서 mongoDB에 데이터를 넣을 때 추가할 수 있는 신기한 기능(?)을 리팩토링 코드 리뷰를 받으면서 알게되어 그 내용을 정리하여 글을 쓰고자 한다.리뷰받은 코드는 다음과 같다.types.DataToUpdateInMongo{ ... TotalTradingVolume: totalTradingVolume.String() ...} 여기서 TotalTradingVolume 엄청나게 큰 숫자 값(블록체인 서비스다보니 기본 단위가 10^18 이기 때문)이다. 이래저래 사칙연산도 필요하다 보니 decimal.Deciaml 타입인 totalTradingVolume을 변수로 계산을 마친 후, 이제 mongo db 저장을 위해 최종 구조체에 값을 저장하려고 하는 코드이다. mongo에 이..
실무에서 소수점을 중요하게 다루는 작업이 많이 이뤄진다. 실수 계산의 정확도가 떨어지는 경우를 발견하고, 해결하는 작업을 하면서 다시금 부동 소수점에 대해 공부를 하게 되었고 이를 정리한 글이다. 컴퓨터는 0과 1로 이루어진 기계어를 사용한다. 인간은 수를 표현할 때 기본적으로 10진법을 사용하지만, 컴퓨터는 0과 1을 사용한 2진법을 사용한다. 그러므로 컴퓨터가 수를 표현하는 법에 대해서 얘기하려면 10진수를 2진수로 바꾸는 방법에 대해 알아둘 필요가 있다. 이진 기수법 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... 이런 식으로 10진수 기준으로 2가 나올 차례가 되면 2를 쓰는 대신 자릿수를 늘려주는 것이다. 10진수에서는 10^n에 해당하는 수가 될 때마다 자릿수가 ..