Forum: Ruby How to print an array with floating point numbers?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
54ee59d05d2b1bf0dd8c644ea586df00?d=identicon&s=25 thiel (Guest)
on 2008-11-04 11:16
(Received via mailing list)
Hi,

I tried to print an array with a floating point numbers e.g. x[0,0] =
55.123 with the format:  printf("%0.04f\n", x[0,0])

But it failed and I got the message: `printf': can't convert Array into
Float (TypeError)

When I tried  printf("%0.04f\n", 55.123) I got the expected aswer:
55.1123

Can anyone tell me how I can print an array with floating point numbers?

Thanks in advance,

Thiel Chang
253bccb1f1236c92ca27edab089f74df?d=identicon&s=25 Sarcar, Shourya C (GE Healthcare) (Guest)
on 2008-11-04 11:50
(Received via mailing list)
>
Did you mean:
printf("%0.04f\n",x[0][0])
3cb4fdcf13aad6a7dcae83876b0e784e?d=identicon&s=25 Josef 'Jupp' Schugt (Guest)
on 2008-11-04 12:47
(Received via mailing list)
On Tue, 04 Nov 2008 11:12:31 +0100, thiel <schang@wxs.nl> wrote:

> Can anyone tell me how I can print an array with floating point numbers?

printf:

[0.1, 2.3, 4.5, 6.7, 8.9].each { |x| printf("%0.04f\n",x)}
0.1000
2.3000
4.5000
6.7000
8.9000

puts and '%':

[0.1, 2.3, 4.5, 6.7, 8.9].each { |x| puts "%0.04f" % x}
0.1000
2.3000
4.5000
6.7000
8.9000

For multidimensional arrays you need to decide in which order you
iterate
over the indices. There's more than one convention to do so. Typical
order
1: The inner loop iterates over the first, the next outermost loop over
the second   index, and so on.
Typical order 2: The inner loop iterates over the last,  the next
outermost loop over the previous index, and so on.

HTH,

Josef 'Jupp' Schugt
54ee59d05d2b1bf0dd8c644ea586df00?d=identicon&s=25 thiel (Guest)
on 2008-11-04 15:00
(Received via mailing list)
Hi Josef,

Many  thanks for your advice. Solving the problem with your suggestion
was quite trivial (at last :-) )

I ran into problems because I used a wrong multi dimensional array
definition from the book B. Preissig  and changed it into :

--------------------------------------
def Test.mda(width,height)
    Array.new(width).map!{ Array.new(height) }
  end

  x = Test.mda(6,2)

# Some test data

  x[0][0] = 55.123
  x[1][0] = 39.234
  x[2][0] = 41.897
  x[3][0] = 40.456
  x[4][0] = 47.234
  x[5][0] = 51.567


  x[0][1] = 1
  x[1][1] = 2
  x[2][1] = 3
  x[3][1] = 4
  x[4][1] = 5
  x[5][1] = 6

# And the testprogram

 x = x.sort {|v1, v2 | v2 <=> v1}

  for m in 0 .. 5
    if x[m][0] >= x[2][0] then
      printf("Greater %3.3f\n", x[m][0])
    else
      printf("Smaller %3.3f \n", x[m][0] )
    end
  end
  puts "Smallest value = #{x[5][0].to_s}"

  ------------------------------------

And it works fine.

Best regards,

Thiel

Josef 'Jupp' Schugt schreef:
54ee59d05d2b1bf0dd8c644ea586df00?d=identicon&s=25 thiel (Guest)
on 2008-11-04 15:03
(Received via mailing list)
Hi Shourya,

Many thanks for your answer. I solved the problem. The reason was I used
a wrong multi dimensional array definition.

Best regards,

Thiel


Sarcar, Shourya C (GE Healthcare) schreef:
This topic is locked and can not be replied to.