VB - бүтін сандарды бөлу үтірлерді қамтымайды?

Бұл оңай, бірақ мен бұл Excel vba макросты бар, онда мен екі бүтін сандарды бөлуге тырысамын және мен сол жерде үтір болуы керек болса да, дөңгелек санымен аяқталады. Мысалы, 278/101 = 3 болса да, бұл шын мәнінде 2,75 болса, 3. Неліктен бұл?

Макрос шынымен де қарапайым:

Dim intFull, intLow , intDivided as Integer
intFull = 278
intLow = 101
intDivided = intFull \ intLow
1
макрос көре аламыз ба? :)
қосылды автор brettdj, көзі

2 жауаптар

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)

[Мағыналы болу үшін жаңартылған айнымалылар]

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
қосылды
Және бұл! Рахмет! Мен бұл шынымен деп ойладым. Бір нәрсе маған өте қарапайым Visual Basic :) деп айтады Thanx!
қосылды автор Kenny Bones, көзі
Интерфейс ретінде integer, intLow As Integer, dblDivided As Double дұрыс жұмыс істейді. Integer/Integer әрқашан толығымен шығармайды Java (мысалы, int/int нәтижесін int нәтижесін шығарады) айырмашылығы VBA нәтижесін береді - нәтиже тағайындалған айнымалы түріне байланысты болады. Сондай-ақ, Dim intFull, intLow, intDivided As Double бізге екі Variant айнымалы және бір Double айнымалы береді. Соңында, int деген атаумен жазылған Double айнымалысы шатасуға әкеледі
қосылды автор barrowc, көзі
@barrowc. Конвенцияларды атау туралы келіседі және тиісінше жаңартылды, Ұзындық Тұтастай қарағанда тиімдірек болады. Сондай-ақ, жұмыс істеуі қиын болған кезде нұсқаларын жаңарттық, мен стандартты жалғыз сызық өлшемділік стилін іске қосқан болар едім. Түсініктемелеріңізге рахмет.
қосылды автор brettdj, көзі

Әрине, сіз қиғаш сызықты емес, алға қарай қиғаштықты қолдандыңыз ба? (Сондай-ақ, қараңыз: http://zo-d .com/blog/архивтер/бағдарламалау/vba-integer-division-and-mod.html )

2
қосылды
Хм, мен екеуін де, қазір де сынап көрдім. Мен пайдаланған кезде 3 мәнін аламын. Мен пайдаланған кезде 2 мәнін аламын.
қосылды автор Kenny Bones, көзі
Жоғарыда қараңыз. Негізгі мәселе ауыспалы түріңіз болды. Екінші мәселе Йоахим анықтаған кері қиғаш сызықтар болды. Олардың екеуі менің лауазымда бекітілген
қосылды автор brettdj, көзі
Кері қиғаш қалған қалдықты жою туралы мәселені бірінші орналастыру үшін +1.
қосылды автор brettdj, көзі