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.