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
 


Kirim email ke