Double Sayısında Mod İle Tam Sayıları Bulmak

21/03/2020, 11:11

accessman

iyi günler

Dim i As Integer
Dim d As Double
   
For i = 0 To 100
   d = i * 0.75
   If (d Mod X) Then MsgBox "tamsayı"
Next
 bu kodda d tam sayı olduğunda mesaj vermesi için "X" yerine ne yazmalıyım
21/03/2020, 11:15

berduş

if int(d)=d şeklinde deneyin?
21/03/2020, 11:23

accessman

5700 kayıt var güncellenirken progressbarda göstermek için

say = say + 1
deger = say * w / rst.RecordCount
yuzde = say * 100 / rst.RecordCount

If (Int(yuzde) = yuzde) Then
      Call RunProgressBar(Me.pb_item, deger)
      Me.pb_lbl.Caption = "Veriler Güncelleniyor... % " & Int(yuzde)
End If
sizin dediğiniz gibi yazdım ama hiç tam  sayı bulamadığı için if içine giremedi
nasıl bir mantık kurmam lazım

yani hem label üzerinde tam sayı göstereceğim
hemde progresbar titreyip durmasın diye sadece tam sayılarda 
Call RunProgressBar(Me.pb_item, deger
çalışacak

hiç tam sayı elde edemese bile progress bar bitene kadar sadece 100 kez güncellensin ve %1, %2.... diye göstersin
21/03/2020, 12:16

berduş

kodun mantığını söyleyeyim Int() sayıyı aşağı yuvarlar yani 2.999999999999999 bile olsa onu 2 yapar (2.9999999999999999 fazladan 9 eklediğimizde 3 yapıyor ) 0.75 in katları göz önüne alındığında sonucun doğru olması gerek. 2 defa denedim 1-100 bin arasını 2sinde de sonuç doğru çıktı
21/03/2020, 12:20

accessman

ama if içine girmeli yani benim double sayım 36,568 iken bunu if içinde en az bir kez kullanmalı
yani 36 tam sayısı hiç olmasa bile
21/03/2020, 12:24

berduş

sayın accessman ilk mesajınızdaki sorunun cevabı int()dir sorunuzu en baştan yanlış sormuşsanız yada açıklamanız eksikse yapabileceğim bir şey yok.