2016-07-25 4 views
-2

영구 저장소 시스템에서 Googles 프로토콜 버퍼 라이브러리를 사용하고 통화 값을 유지하려고하지만 사진 (부동 소수점/이중)으로 제공된 부동 소수점 유형이 충분하다고 확신하지 않습니다. 모든 통화 값을 문자열로 저장하는 단점이 있습니까 (예 : 0.1 대신 '0.10'저장). 데이터를 검색 할 때 Convert.ToDecimal 함수를 사용하여 산술을 수행해야합니까?proto3에서 문자열로 십진수를 저장하면 단점이 있습니까?

+2

표현의 차이 –

+0

처리해야 할 것보다 훨씬 많은 메모리가 필요합니다. –

답변

0

당신은 float/double 데이터 유형에 대한 적합하지 것을 예측에 올바른이다 "통화!"   그들이 어떤 종류의 진수 표현을 사용

는 SQL 데이터베이스 (그리고, 으음, COBOL 프로그램 ...) 일반적으로 저장 "통화"값이 방법을 고려하십시오.   예를 들어, 실제 COBOL 프로그램은 "BCD (Binary-coded decimal)"데이터 형식을 사용할 수 있습니다.   Microsoft Access 데이터베이스는 "배율 된 정수"를 사용합니다. 달러와 센트 값에 10,000을 곱한 값이 (!) "십진수 오른쪽에 4 자리"로 고정되어 있습니다. 이 질문의 직접적인 목적

, 나는 확실히 문자열로 값을 저장 한 다음 매우 자릿수에 심각한 생각이 저장 될 그냥 그 숫자에 "반올림"처리하는 방법을 줄 것이다 자리 수.  

“ 저장 크기 (예를 들면, 은행 “ ’의 라운딩. ” 알고리즘 등이있다)? ”   너 don ’ t에 대해 신경 써야합니다.   당신이 무엇 할 경우, 특정 고객 (또는, 감사 ...) 실제로 인쇄 된 진술에 모든 숫자를 추가, 그 종이에 하단 라인 동의합니다. . 아주 적은 (!) 최소 한 켤레 안에.

+0

관심사의 문제로, IBM의 힘 CPUs에는 요즈음 십진법 수학 보조 프로세서가있다. 금융 애플리케이션에 매우 편리하며 큰 스피드 업을 제공합니다. 놀랍게도 IBM은 많은 메인 프레임을 금융 세계에 판매합니다! – bazza