Decimals are being converted to Bigdecimals!!!!!

1,257 views
Skip to first unread message

Neal L

unread,
Jan 19, 2008, 12:09:50 PM1/19/08
to Ruby on Rails: Talk
Hi all,

I'm working on a financial app, and have set up some columns in my
tables as decimals with precision => 8 and scale => 2. My migration
looks like:

change_column :lineitems, :price, :decimal, :precision =>
8, :scale => 2
change_column :payments, :amount, :decimal, :precision =>
8, :scale => 2

I've run the migration and restarted the server. I also looked at the
Mysql tables to verify that the migration ran correctly, and the
fields look like they're set up right ( DECIMAL(8,2) ).

The problem is that when I access these columns in the console, they
show up as Bigdecimal and it's messing up my calculations. Here's
what it looks like from the rails console:

>> Lineitem.find(34).price
=> #<BigDecimal:31e4c74,'0.3E4',4(12)>
>> Payment.find(23).amount
=> #<BigDecimal:31b8480,'0.4125E4',4(12)>

What's going on here? How do I get Rails to recognize that these are
decimal/currency amounts?????

Rick DeNatale

unread,
Jan 19, 2008, 3:08:44 PM1/19/08
to rubyonra...@googlegroups.com

BigDecimal is just the Ruby class which represents decimal fixed point numbers.

How is it "messing up your calculations?"

>> b = BigDecimal.new("100", 2)
=> #<BigDecimal:13f4e6c,'0.1E3',4(8)>
>> b.to_s
=> "100.0"
>> b + 1
=> #<BigDecimal:13f0b8c,'0.101E3',4(12)>
>> (b + 1).to_s
=> "101.0"


--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Reply all
Reply to author
Forward
0 new messages