www.elektronik.si
VB6 izpis za decimalko

www.elektronik.si -> Programska oprema

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Ned Apr 15, 2018 6:00 pm    Naslov sporočila:  VB6 izpis za decimalko
----------------------------------------------------------------------------
Hi

Imam Visual basic 6 in bi rad, da mi izpiše prva 4 števila za decimalko.

primer:
3210,1234567890 izpis naj bo 1234

0,98765 izpis naj bo 9876

Kako to dosežem?

LP,marko

Avtor: igo PrispevekObjavljeno: Ned Apr 15, 2018 7:12 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Od števila odštej samo celi del, pomnoži z 10000 in spet vzemi samo celi del.

Ne poznam VB sintakse za filtriranje celega dela. Če ne gre v enem koraku, naredi v dveh in naj se potem prevajalnik ukvarja z optimizacijo.

Zanimivo bi bilo videti, kakšen ostanek pri deljenju z 1 vrne (Stevilo % 1), če je Stevilo tipa float Pray

Avtor: blay44 PrispevekObjavljeno: Ned Apr 15, 2018 8:55 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Tole kar razlaga Igo pride prav pri pisanju programov, ki jih moramo prevajati v več različnih jezikov.
Drugače pa ima vb6 vgrajeno funkcijo Round. Pa tud podobno vb.net.

enoStevilo = Round(krDrugoStevilo, steviloDecimalk)

Zadnjo decimalko zaokroži.

LP

Avtor: blay44 PrispevekObjavljeno: Ned Apr 15, 2018 9:20 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Uh, površno sem prebral. d'oh!
Druga pot je obdelava stringa.

Avtor: Krampus PrispevekObjavljeno: Pon Apr 16, 2018 12:19 am    Naslov sporočila:  
----------------------------------------------------------------------------
Koda:
        Dim aaa As Decimal
        aaa = 12345.1234

        MsgBox(CLng((aaa - CLng(aaa)) * 10000))

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Sre Apr 18, 2018 5:32 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Krampus@

Dokler je a pozitiven je vredu, če pa je a= -123.987654, pa izpiše še predznak minus.

LP,

Avtor: Krampus PrispevekObjavljeno: Sre Apr 18, 2018 8:27 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Krampus je napisal/a:
Koda:
        Dim aaa As Decimal
        aaa = 12345.1234

        MsgBox(Abs(CLng((aaa - CLng(aaa)) * 10000)))

Avtor: marko11Kraj: Dobrepolje PrispevekObjavljeno: Ned Apr 22, 2018 12:58 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hi

Računi se ne izidejo če je:

aaa= 8,51851919533492

Rezultat pa je: 4815

Račun pa je pravilen če je aaa= 8,11851919533492, rezultat je pravilen: 1185

Če je prvo število za decimalko 1-4 je rezultat pravilen, če pa je višje od 4 pa rezultat ni pravilen.

Torej ta formula ni zanesljiva.

Avtor: eddieKraj: Severna primorska PrispevekObjavljeno: Ned Apr 22, 2018 1:43 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Rešitev s stringi:
Koda:
r = 8.51851919533492
s = Str(r) 'Pretvorba v string
vejica = InStr(1, s, ".") 'poiščemo decimalno vejico(piko)
decimalke = Mid(s, vejica + 1, 4) 'In iz stringa vzamemo 4 znake za vejico


V spremenljivki decimalke je rezultat...

Avtor: frenkiKraj: Ljubljana (JN76GB) PrispevekObjavljeno: Ned Apr 22, 2018 2:22 pm    Naslov sporočila:  
----------------------------------------------------------------------------
A takole ne bi šlo?
Koda:
INT((ABS(3210,123456789)-INT(ABS(3210,123456789)))*10000)

INT((ABS(8,51851919533492)-INT(ABS(8,51851919533492)))*10000)

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group