At 10:51 25-09-99 -0500, you wrote: >On 25-Sep-1999, Aldrin Aviananda wrote: >> gimana kalo: >> % perl -e '$a = 0; printf("%f\n",$a * -1 + 0)' >> 0.000000 >> perl stores numbers as signed integer if possible... komentar aja: meski disimpan sebagai int, kalo ngga pake pragma 'use integer' kayaknya ngga akan improve performance. sebab defaultnya, perl menghitung operasi aritmatik dengan double. mis: $a = 1; # int $a = $a*2; # 1(double) * 2(double) = 2(double) # $a == double dengan 'use integer': $a = 1; # int $a = $a*2; # 1(int) * 2(int) = 2 (int) tapi ini mungkin bisa dideteksi oleh optimizer. >tapi gimana roundingnya yah? masalah saya sebetulnya kurang lebih >begini: > >[~]$ perl -e '$a=0.00000000000000000003; $a*=-1; printf("%#-7.3f\n",$a+0)' >-0.000 > >itu $a pokoknya kecil banget deh nilainya.. mendekati nol, but not >exactly. sori, nerusin kode saya: $TOL = 1e-6; # atau terserah... for (@copy) { $_ = 0 if is_numeric($_) and $_ <= 0 and -$_ < $TOL } intinya, bilangan negatif yang kecil sekali, dan 'negatif nol', diubah menjadi 'positif nol'. hm, saya jadi cenderung membiarkan -0.000 itu tetap negatif, tidak positif. sebab menjadi pertanda bahwa angka tersebut diperoleh dari pembulatan sebuah angka *negatif* yang kecil sekali. (terbedakan dari +0.000). it's entirely up to you, though... :-) -- Steven Haryanto <[EMAIL PROTECTED]> -------------------------------------------------------------------------------- Utk berhenti langganan, kirim email ke [EMAIL PROTECTED] Informasi arsip di http://www.linux.or.id/milis.php3 Pengelola dapat dihubungi lewat [EMAIL PROTECTED]