i have looked at all the ruby manual but i cant find no way of doing

this I am very new to ruby

so here is my problem

ok first here is my code

sum = “5:5:5”

sum = sum.split(":")

sum = sum.inject {|sum, x| sum + x }

puts sum

problem is that when you use split it splits the values into strings

what i need to know is how do i change all the values in the array sum

eg

“5”,“5”,“5”

to floating point numbers

i just cant work it out any help would be much appreciated

Hi –

On Sat, 7 Jul 2007, zabouth wrote:

problem is that when you use split it splits the values into strings

what i need to know is how do i change all the values in the array sum

eg

“5”,“5”,“5”

to floating point numbers

i just cant work it out any help would be much appreciated

Use to #to_f method:

sum.split(":").inject(0) {|acc, x| acc + x.to_f }

David

On Jul 07, 2007, at 10:56 , zabouth wrote:

problem is that when you use split it splits the values into strings

what i need to know is how do i change all the values in the array sum

eg

“5”,“5”,“5”

to floating point numbers

i just cant work it out any help would be much appreciated

Well first your fix:

puts “5:5:5”.split( “:” ).inject( 0.0 ) { | sum, x | sum + x.to_f }

If this is something that you plan on using all the time you can

define a new method on the String class like so:

class String

def delimited_sum( delimiter = ’ ’ ) # Default delimiter is a space

self.split( delimiter ).inject( 0.0 ) { | sum, x | sum + x.to_f }

end

end

“5:5:5”.delimited_sum( ‘:’ )

=> 15

zabouth wrote:

problem is that when you use split it splits the values into strings

what i need to know is how do i change all the values in the array sum

eg

“5”,“5”,“5”

to floating point numbers

i just cant work it out any help would be much appreciated

sum = sum.split(":").map {|e| e.to_f}

would work.

best,

Bojan

zabouth wrote:

i have looked at all the ruby manual but i cant find no way of doing

this I am very new to ruby

so here is my problem

ok first here is my code

sum = “5:5:5”

sum = sum.split(":")

sum = sum.inject {|sum, x| sum + x }

puts sum

If you happen to have Rails (or just ActiveSupport) installed:

```
require 'rubygems'
require 'active_support'
'5:5:5'.split(':').map(&:to_f).sum
=> 15.0
```

Pete Y.

http://notahat.com/