[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to print an array with floating point numbers?

Thiel Chang

11/4/2008 10:13:00 AM

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







4 Answers

Sarcar, Shourya C (GE Healthcare)

11/4/2008 10:45:00 AM

0



> -----Original Message-----
> From: thiel [mailto:schang@wxs.nl]=20
> Sent: Tuesday, November 04, 2008 3:43 PM
> To: ruby-talk ML
> Subject: How to print an array with floating point numbers?
>=20
> Hi,
>=20
> I tried to print an array with a floating point numbers e.g. x[0,0] =
=3D
> 55.123 with the format: printf("%0.04f\n", x[0,0])
>

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

--
Shourya




Josef 'Jupp' Schugt

11/4/2008 11:45:00 AM

0

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
--
Blog: http://penpen.gooda...
PGP key (id 6CC6574F): http://wwwkeys.d...
Jabber - http://www.j... - contact information on request

Thiel Chang

11/4/2008 1:58:00 PM

0

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:
> <div class="moz-text-flowed" style="font-family: -moz-fixed">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

Thiel Chang

11/4/2008 2:01:00 PM

0

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:
>
>> -----Original Message-----
>> From: thiel [mailto:schang@wxs.nl]
>> Sent: Tuesday, November 04, 2008 3:43 PM
>> To: ruby-talk ML
>> Subject: How to print an array with floating point numbers?
>>
>> 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])
>>
>>
>
> Did you mean:
> printf("%0.04f\n",x[0][0])
>
> --
> Shourya
>
>
>
>
>
>