지난 주 내내, 대개의 작업 레일 프로젝트는 BigDecimal.to_f에 관해서 나쁘게 작동하기 시작했습니다. to_f 호출 할 때마다 BigDecimal의 수는 0.0로 출력을 가져옵니다ruby 1.9.3-p194 rails 3.2.9 BigDecimal to_f는 항상 0.0을 출력합니다.
~/development/rails_project> rails c
Loading development environment (Rails 3.2.9)
1.9.3p194 :001 > BigDecimal.new('5').to_f
=> 0.0
을 나는 루비 패치 레벨 194 1.9.3 실행 및 레일 3.2.9 해요, 난 항상 가지고. 동일한 버전을 사용하는 동일한 프로젝트에서 작업하는 일부 동료에게는이 문제가 없습니다.
동일한 결과를 가진 Ruby 1.9.3 패치 레벨 362에서도 시도되었습니다. 누구든지 똑같은 문제가 있었고 그것을 극복하는 방법을 알고 있습니까?
감사합니다.
편집 :
이내 문제가 그리고 to_s 기능,하지만 to_f하지입니다. 내 문제가 number_to_currency에 있기 때문에 아마 단순화를 통해-: 디버깅와
~/development/rails_project> rails c
Loading development environment (Rails 3.2.9)
1.9.3p194 :001 > include ActionView::Helpers::NumberHelper
=> Object
1.9.3p194 :002 > BigDecimal.new('5').to_s('F')
=> "5.0"
1.9.3p194 :003 > BigDecimal.new('5').to_s
=> "5.0"
1.9.3p194 :004 > BigDecimal.new('5').to_f
=> 0.0
1.9.3p194 :005 > number_to_currency(5)
=> "€ 0,00"
, 나는 number_with_precision
방법으로 좁혀, 더 정확하게 라인 :
rounded_number = BigDecimal.new(number.to_s).round(precision).to_f
만약 I의 출력 이 선의 다른 부분은 다음과 같은 결과를 얻었습니다.
number = 5.0
number.to_s = "5.0"
precision = 2
BigDecimal.new(number.to_s) = 5.0
BigDecimal.new(number.to_s).round(precision) = 5.0
BigDecimal.new(number.to_s).round(precision).to_f = 0.0
단서가 있습니까?