Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako ovo objasniti?

[es] :: Visual Basic 6 :: Kako ovo objasniti?

[ Pregleda: 2355 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Kako ovo objasniti?14.11.2013. u 13:49 - pre 126 meseci

Code:


Public artUkupno As Single

Private Sub Form_Load()

Dim potroseno As Integer

artUkupno = 0

artUkupno = artUkupno + 3.39
artUkupno = artUkupno + 1.29

artUkupno = artUkupno + 1.49
artUkupno = artUkupno + 0.99
artUkupno = artUkupno + 1.99

artUkupno = artUkupno + 1.4
artUkupno = artUkupno + 3.15
artUkupno = artUkupno + 0.3

'artUkupno = Format(artUkupno, "#,###0.00")

potroseno = Int(artUkupno)

Debug.Print potroseno

End Sub



Rješenje problema je u formatiranju, ali me zanim kako to VB6 interno pamti brojeve, očigledno ne onako kako ih prikazuje u Add Watch ili Output prozoru.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

shpiki
Student
Novi Sad

Član broj: 50342
Poruke: 1651



+62 Profil

icon Re: Kako ovo objasniti?14.11.2013. u 18:18 - pre 126 meseci
Sta ti nije jasno?
Doduse malo je bezveze program (konstantno sabira artUkupno staro na koje dodaje odredjene vrednosti).
Sta konkretno treba da radi ovaj program?
There are only 10 types of people in the world:
those who understand binary, and those who don't.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kako ovo objasniti?14.11.2013. u 19:37 - pre 126 meseci
Kako bezveze program, ovo ti je moj najbolji program!!!

Istina nisam objasnio gdje je problem, mislio sam da će neko isprobati ovaj kod. Problem je sto nakon sabiranja, vrijednost u Single varijabli je 14 ili bar tako VB ispiše, ali u stvari on negdje interno drzi broj koji je priblizno 14.

Kad se uradi konvertovanje u int, ova linija:

Code:
potroseno = Int(artUkupno)


vrijednost u varijabli potroseno je 13.
Sa varijablom tipa Double nema tih problema.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
..106.109.adsl.dyn.beotel.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Kako ovo objasniti?14.11.2013. u 19:39 - pre 126 meseci
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
 
Odgovor na temu

shpiki
Student
Novi Sad

Član broj: 50342
Poruke: 1651



+62 Profil

icon Re: Kako ovo objasniti?15.11.2013. u 01:03 - pre 126 meseci
Citat:
dava: Kako bezveze program, ovo ti je moj najbolji program!!!

Izvini, nisam hteo da te uvredim! Jednostavno, nisam video svrhu/poentu ovog programa...

Procitaj ovo sto ti je Burgos postavio (mada je za moj ukus preopsirno), a mozes da konsultujes Google za "pokretni zarez" ako ti je nas laksi za razumevanje...
U svakom slucaju, poenta je u Sigle data type i floating-point...
There are only 10 types of people in the world:
those who understand binary, and those who don't.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kako ovo objasniti?15.11.2013. u 12:31 - pre 126 meseci
Citat:
shpiki: Izvini, nisam hteo da te uvredim! Jednostavno, nisam video svrhu/poentu ovog programa...


Ma nisi me uvredio nego zar ne vidiš da je ovo primjer problematičnog koda, a ne neki funkcionalni program.

Da odgovorim sam sebi:

3.39 11.01100011110101110000101000111101 11.01100 3.375
1.29 1.01001010001111010111000010100011 1.010010 1.28125
1.49 1.01111101011100001010001111010111 1.011111 1.484375
0.99 0.11111101011100001010001111010111 0.111111 0.984375
1.99 1.11111101011100001010001111010111 1.111111 1.984375
1.4 1.01100110011001100110011001100110 1.011001 1.390625
3.15 11.00100110011001100110011001100110 11.00100 3.125
0.3 0.01001100110011001100110011001100 0.010011 0.296875

Druga kolona su decimalni brojevi predstavljeni u binarnom obliku (tako ih računar tretira)
Treća kolona su ti isti binarni brojevi ali zaokruženi na 7 cifara (tako ih zaokružuje tip Single)
Četvrta kolona su opet decimalni brojevi ali oni dobiveni iz zaokruženih binarnih.
Suma 4. Kolone je 13.921875 a čiji je integer 13.


SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Kako ovo objasniti?15.11.2013. u 12:58 - pre 126 meseci
Grešiš, ali silno grešiš.

Single (float) tip podataka ima preciznost od 6-9 DECIMALNIH cifara, a ne BINARNIH. Za predstavljanje float tipa pogledaj:
http://en.wikipedia.org/wiki/S...recision_floating-point_format

Mantisa float broja sadrži 23 binarne cifre (ili bolje rečeno 24 jer se prva jedinica sa leve strane ne piše), tako da ako želiš da vidiš zašto nije ispalo ono što si mislio da će ispasti, uzmi od svakog od tih brojeva 24 bita pa onda napravi računicu...
 
Odgovor na temu

[es] :: Visual Basic 6 :: Kako ovo objasniti?

[ Pregleda: 2355 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.