# How to print an array with floating point numbers?

**URL:** <https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470>\
**Category:** Ruby\
**Created:** [November 4, 2008, 11:16am UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470 "2008-11-04T11:16:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![thiel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/3ab097/32.png) [@thiel](https://www.ruby-forum.com/u/thiel)\
**Post date:** [November 4, 2008, 11:16am UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470/1 "2008-11-04T11:16:34Z")

</div>

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 C.

---

<div class="post-metadata">

**Author:** ![thiel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/3ab097/32.png) [@thiel](https://www.ruby-forum.com/u/thiel)\
**Post date:** [November 4, 2008, 11:50am UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470/2 "2008-11-04T11:50:00Z")

</div>

> 

Did you mean:  
printf("%0.04f\n",x[0][0])

---

<div class="post-metadata">

**Author:** ![thiel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/3ab097/32.png) [@thiel](https://www.ruby-forum.com/u/thiel)\
**Post date:** [November 4, 2008, 12:47pm UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470/3 "2008-11-04T12:47:38Z")

</div>

On Tue, 04 Nov 2008 11:12:31 +0100, thiel [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![thiel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/3ab097/32.png) [@thiel](https://www.ruby-forum.com/u/thiel)\
**Post date:** [November 4, 2008, 3:03pm UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470/4 "2008-11-04T15:03:17Z")

</div>

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:

---

<div class="post-metadata">

**Author:** ![thiel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/3ab097/32.png) [@thiel](https://www.ruby-forum.com/u/thiel)\
**Post date:** [November 4, 2008, 3:00pm UTC](https://www.ruby-forum.com/t/how-to-print-an-array-with-floating-point-numbers/152470/5 "2008-11-04T15:00:20Z")

</div>

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:
