2013-05-19 36 views
4

構造函數BigDecimal採用可選的第二個參數,它指定對象的精度數字。從ruby-doc如何用BigDecimal構造函數中的字符串指定精度參數?

新的(初始的,位數)

的顯著位數,作爲一個Fixnum。如果省略 或0,則有效位數由 初始值確定。

但是,使用字符串時,此行爲與描述不匹配。

BigDecimal.new('1.2345', 4).to_s('F') 
# 1.2345 
BigDecimal.new('1.2345', 1).to_s('F') 
# 1.2345 

如何在使用String參數時使用BigDecimal指定精度?

+0

你是怎麼得到輸出'#1.2345'?我看到'#BigDecimal:8701964,'0.12345E1',18(18)>'爲BigDecimal.new('1.2345',4)'。 –

+0

使用'to_s('F')'以浮點格式打印它。 – steveyang

+0

你應該在你的文章中表明,因爲你做的比你明確表達的更多,然後說你很困惑,當你展示的不是你正在做什麼來獲得結果。 – vgoff

回答

0

一個簡單的解決方法是BigDecimal.new('1.2345'.to_f, 1)

2

的BigDecimal並不需要精確PARAM用字符串值。

正確做法:

BigDecimal.new("1020.567").round(2) => 1020.57 

錯誤的做法:

BigDecimal.new(1020.567, 2) => 1000.0 
相關問題