2012-10-25 2 views
6

루비에서 BigDecimal을 반올림하고 싶습니다. 나는 라운드 기능 만루비 빅 10 진수 반올림 고정 숫자

을 사용할 수 있습니다 알고있는 라운드 기능 내가

(3.2).round(2) => 3.20 
(3.20).round(2) => 3.20 
(3).round(2) => 3.00 
(3.578).round(2) => 3.58 

난 항상 2 개 진수 장소, 3.20하지 3.2

하나를 갖고 싶어합니다

(3.2).round(2) => 3.2 

제공 이 일을 어떻게 완료 할 생각인가?

답변

15

이 시도 :

'%.2f' % 3.2 
=> "3.20" 

'%.2f' % 3 
=> "3.00" 

'%.2f' % 3.578 
=> "3.58" 

etc. 
+0

고마워 .. 그 자리에 – Abid

5

예를 들어, Java's BigDecimal를 들어, Ruby's BigDecimal는 인스턴스 당 정밀도를 가지고 있지 않습니다 달리. Ruby BigDecimal의 3.2와 3.20의 차이점은 형식을 지정하는 것입니다.

+0

나는 자바를 모른다. 그래서 나는 아마 오해하고있다. 그러나 어떤 경우에는 BigDecimal 인스턴스의 정밀도를 지정하는 것이 Ruby에서 필수 사항입니다 :'require 'bigdecimal'; BigDecimal.new (1/3.0)'오류 : Rational에 대한 정밀도를 생략 할 수 없습니다. – steenslag

+0

참이지만 유효 숫자의 숫자는 초기 값을 가져 오는 데 사용됩니다. 해당 인스턴스에 "고정"되어 있지 않습니다. 'bigdecimal '을 요구하십시오; dec = BigDecimal.new (2.345, 2); dec.precs # => [18, 36]'및'dec.to_s ('F') # => "2.3"' –