VB - Divide tam sayıları virgül içermez mi?

Bu muhtemelen kolay bir tane, ama iki tamsayı bölmeye çalıştığım bu Excel vba makrosunu aldım ve orada bir virgül olmasına rağmen, yuvarlak bir sayıyla sonuçlanıyorum. Örneğin 278/101 = 3. Gerçekten 2,75 iken 3 değil. Neden bu?

Makro, gerçekten çok basit:

Dim intFull, intLow , intDivided as Integer
intFull = 278
intLow = 101
intDivided = intFull \ intLow
1
Makroyu görebilir miyiz? :)
katma yazar brettdj, kaynak

2 cevap

Your result variables is an integer

If you work with doubles instead you will get 2.752 etc - which can be rounded using dbDivided = Round(lngFull/lngLow, 2)

[değişkenler daha anlamlı olacak şekilde güncellendi]

Sub redone()
    Dim lngFull As Long
    Dim lngLow As Long
    Dim dbDivided As Double
    lngFull = 278
    lngLow = 101
    dbDivided = Round(lngFull/lngLow, 2)
End Sub
5
katma
Ve işte bu! Teşekkürler! Bunu gerçekten tahmin etmeliydim .. Bir şey bana bunun oldukça basit olduğunu söylüyor Visual Basic :) Thanx!
katma yazar Kenny Bones, kaynak
Tamsayı olarak IntFull, IntLow As Integer, Çift Olarak DblDivided doğru çalışır. Örneğin, Java (burada int/int bir int sonucu üretir), Tamsayı/Tamsayı her zaman bir Tamsayı üretmez VBA ile sonuçlanır - sonucun atandığı değişkenin türüne bağlıdır. Ayrıca, Dim intFull, intLow, IntDivided Double olarak bize iki Variant değişken ve bir Double değişkeni verir. Son olarak, int ile başlayan bir ada sahip bir Double değişkeni karışıklığa yol açacak.
katma yazar barrowc, kaynak
@barrowc. Adlandırma kuralı üzerinde anlaşmaya varıldı ve buna göre güncellendi, Uzun, Tamsayıdan daha verimli. Ayrıca, çalışılabilir olsa da, standart tek satır boyutlandırma stilimi çalıştırmalıyım. Yorumlarınız için teşekkürler.
katma yazar brettdj, kaynak

Ters eğik çizgi ve ters eğik çizgi kullandığınızdan emin misiniz? (Ayrıca bkz .: http://zo-d .com/blog/arşiv/programlama/vba-tamsayı-bölünme-ve-mod.html )

2
katma
Hmm, ben de şimdi denedim. Kullandığımda/3 değerini alırım. Kullandığımda 2 değerini alırım.
katma yazar Kenny Bones, kaynak
yukarıyı görmek. Ana konu değişken tipinizdi. İkincil konular Joachim'in tanımladığı ters eğikti. Her ikisi de yazımda sabit
katma yazar brettdj, kaynak
Ters eğik çizgi kalanlar için ilk önce +1, iptal sorununu ortadan kaldırır.
katma yazar brettdj, kaynak