Thanks mas Anton, Walo nggak ada hubungannya, tetapi tambah informasi. Sekarang jadi lebih hati2 kalo memilih fungsi vba atau excel.
Untuk hitungan numeric yang detail hasil dari excel harus dibandingkan dengan software pengolah angka yang lebih bagus seperti mathcad atau matlab. Salam _zainul_ ________________________________________ From: [email protected] [mailto:[email protected]] On Behalf Of anton suryadi Sent: Sunday, February 28, 2010 11:43 AM To: [email protected] Subject: Re: [belajar-excel] kenapa INT((204.01 - 204) * 100) <> 1 ? Setelah ngebaca pertanyaan pak zainul, langsung keinget tentang fungsi vba ROUND yang hasilnya bisa berbeda dengan fungsi excel ROUND. Cek: http://support.microsoft.com/kb/194983 misal: fungsi excel: =Round(2.225,2) menghasilkan 2.3 fungsi vba: Function ron(x) ron = Round(x, 2) 'untuk x 2.225 menghasilkan 2.2 End Function gak nyambung dengan pertanyaannya ya,, tapi mungkin bisa bermanfaat,, ________________________________________ From: zainul ulum <[email protected]> To: [email protected] Sent: Sun, February 28, 2010 11:17:07 AM Subject: RE: [belajar-excel] kenapa INT((204.01 - 204) * 100) <> 1 ? Maturnuwun mas Kid, Bermanfaat sekali penjelasannya. Ceritanya begini, Saya sedang mengolah data hasil ukuran sudut dari alat total station (TS) yang dinyatakan dalam derajat, menit dan detik. Jika hasil pengukurannya adalah 204 derajat, 1 menit, 1 detik hasil download dari TS tertulis 204.0101 Jadi kalo data dari TS adalah 204.01, dibaca 204 derajat, 1 menit. Alasan kenapa saya memakai fungsi yang menghasilkan data type integer adalah mempertimbangkan bahwa hasil dari fungsi tersebut hanya dari angka 0 sampai 59. D = Int(DMS)'derajat DMS=Sudut dalam format d.mmss M = Int((DMS - D) * 100)'menit s = (DMS * 100 - Int(DMS * 100)) * 100'detik Dengan rumus di atas sebagian besar mendapatkan hasil yang saya harapkan, tetapi untuk sudut2 tertentu terjadi kesalahan. Misal untuk sudut 204.1 D=204 tetapi M=0 Kemudian saya ganti INT mejadi FIX, ternyata tetep aja M=0 Sebelum ada jawaban dari mas Kid, karena pusing mikirin INT dan FIX akhirnya rumus saya rubah menjadi, s = Format(absDMS, "000.000000" ) Der = CInt(Left(s, 3)) Men = CInt(Mid(s, 5, 2)) Det = CDbl(Mid(s, 7, 2)) + CDbl(Right(s, 2) / 100) Kini, saatnya menerapkan saran dari Mr.Kid Apakah akibatnya jika semua data type yang semula integer dirubah menjadi long (integer)? Karena setahu saya ada hubungannya dengan alokasi memory yang akan dipakai jika integer adalah 2 byte dengan range -32768 to 32767 Jika long adalah 4 byte dengan range -2147483648 to 2147483647 Mohon maaf kepanjangan ceritanya _zainul_ ____________ _________ _________ _________ _ From: belajar-excel@ yahoogroups. com [mailto:belajar-excel@ yahoogroups. com] On Behalf Of Mr. Kid Sent: Sunday, February 28, 2010 5:24 AM To: belajar-excel@ yahoogroups. com Subject: Re: [belajar-excel] kenapa INT((204.01 - 204) * 100) <> 1 ? Hai mas Zainul, datatype double dan single adalah bilangan approximate dan diproses dengan algoritma yang berbeda dengan bilangan bulat seperti integer atau long. Jadi nilai desimal suatu bilangan akan tersusun dalam banyak angka dibelakang koma yang dibulatkan. Sedangkan fungsi Int() akan membulatkan ke terkecil terdekat. Alhasil, semua bilangan approximate (double dan single) akan dibulatkan ke nilai terkecil terdekat. Sedangkan 1 didefinisikan sebagai nilai approcimate berupa 0.99sekian Fungsi konversi datatype berbeda dengan fungsi pembulatan suatu angka seperti Int() Int(99.99) = 99 Int(-99.99) = -100 Cint(99.99)= 100 Cint(-99.99) =-100 maksud dari syntax mas Zainul adalah memeriksa apakah selisihnya bernilai 1, maka kerjakanlah keduanya sebagai bilangan bulat, atau jadikanlah hasil akhir sebagai bilangan bulat silakan dicoba, agar punya gambaran yang lebih jelas clng((204.01- 204) * 100) 204.01 * 100 mod 204*100 clng(204.01 * 100) - clng(204 * 100) Semoga bermanfaat. Kid. __________ Information from ESET NOD32 Antivirus, version of virus signature database 4901 (20100227) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset. com __________ Information from ESET NOD32 Antivirus, version of virus signature database 4901 (20100227) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com

