통화에는 부동 소수점이 적합하지 않습니다. Mongoid는 Float 및 BigInteger를 지원합니다. 통화 가치를 저장하고 작업하는 가장 좋은 방법은 무엇입니까?Mongoid를 사용하는 통화의 데이터 유형
12
A
답변
6
아마도 Money gem을보고 싶을 것입니다.
작동 방식은 센트로 금액을 나타내고 정수를 사용하는 것입니다. 플로트 정밀도를 다룰 필요가 없도록 데이터를 정수로 저장할 수 있습니다.
0
실제로 소수 부분을 사용하지 않은 경우, 즉 사전 계산 된 적분 값 만 저장 한 경우 통화가 제대로 작동합니다. 부동 소수점은 정수를 저장하고 정수 연산을 정확하게 수행합니다.
물론이 시점에서 정수를 사용할 수도 있습니다.
1
시몬이 말한 것.
방금 프로젝트에 돈 젬을 삽입 했으므로 머니 유형으로 저장할 수 있습니다.
class Product
include Mongoid::Document
field :price, type: Money
end
Money.class_eval do
# Converts an object of this instance into a database friendly value.
def mongoize
[cents, currency.to_s]
end
class << self
# Get the object as it was stored in the database, and instantiate
# this custom class from it.
def demongoize(object)
cur = object[1] || Money.default_currency
Money.new(object[0], cur)
end
# Takes any possible object and converts it to how it would be
# stored in the database.
def mongoize(object)
case object
when Money
object.mongoize
else object
end
end
# Converts the object that was supplied to a criteria and converts it
# into a database friendly form.
def evolve(object)
case object
when Money then object.mongoize
else object
end
end
end
end
관련 문제
- 1. Mongoid를 사용하는 트리 메뉴
- 2. MongoDB/Mongoid를 사용하는 I18n 백엔드
- 3. MongoID를 업데이트 키로 사용하는 방법 쿼리
- 4. 동유럽 통화의 라이브 Forex 데이터 웹 서비스?
- 5. 레일 3 : 동시에 활성 레코드와 mongoid를 사용하는 방법
- 6. mongoid update_attributes 데이터 유형 변경
- 7. String.Format (...) 통화의 경우
- 8. 특정 통화의 현지 통화 코드
- 9. 데이터 유형
- 10. 데이터베이스 데이터 유형 크기
- 11. 자체 추진 데이터 유형
- 12. 긴 데이터 유형 오버플로
- 13. Mongoid를 배우기위한 최고의 튜토리얼은 무엇입니까?
- 14. Django : 통화의 FloatField 또는 DecimalField?
- 15. mongoid를 사용한 범위가 지정된 역할
- 16. 인수로 데이터 유형 보내기?
- 17. 하스켈에있는 목록 : 데이터 유형 또는 추상 데이터 유형?
- 18. Motorola PLC의 데이터 유형 대 .Net의 데이터 유형?
- 19. 가상 데이터 유형/열거
- 20. Best MySQL 데이터 유형
- 21. Sqlite 데이터 유형
- 22. phpmyadmin에서 데이터 유형 증가시키기
- 23. 데이터 유형 속성 구현
- 24. pg_fetch_row 데이터 유형 선택
- 25. 혼합 데이터 유형 결과
- 26. C# 내의 데이터 유형
- 27. 맞춤 데이터 유형 저장
- 28. PHP 변수 데이터 유형
- 29. Iphone 데이터 유형
- 30. 복잡한 데이터 유형 테스트?
통화로 작업 할 때 "고정 정밀도"번호 라이브러리가 필요하다는 것을 읽었습니다. – timstepp
http://www.codeguru.com/forum/showthread.php?threadid=503157은 토론의 예입니다. – timstepp