» »

[vb] Branje formata števil

[vb] Branje formata števil

zupancicff ::

Imam problemček.
Rad bi prebral format zapisane številke (npr "#0.0##") in potem format te številke spremenil tako, da bi mu dodal še eno decimalno mesto.
Primer:
v textboxu1 imam številko 5,1 (eno decimalno mesto)
v textboxu2 pa bi sedaj rad zapis števila 122,5863 glede na številko v texboxtu1 videl v obliki 122,59 (dve decimalni mesti).

A mi lahko kdo pomaga?

Hvala

StudioPesec ::

formatnumber(strNumber,2)

zupancicff ::

Hvala lepa za odgovor.

Ker se število decimalnih mest v mojem primeru spreminja, rabim tudi vsakokrat šteti število decimalnih mest v številu.

A je tudi kaka enostavna funkcija za štetje znakov za decimalno vejico v decimalnem številu.

Sam poznam le ta način, da poiščeš položaj decimalke v stringu in nato izračunaš razliko med dolžino stringa in mestom vejice. Pa se mi zdi, da je to preveč komplicirano.

Hvala za odgovor

Zgodovina sprememb…

darkolord ::

Zakaj pa moraš vedet število decimalnih mest?

zupancicff ::

Zadeva je s področja meroslovja, kjer računamo merilno negotovost, ki jo podajamo v obliki, ki je odvisna od ločljivosti (števila decimalk) merilne skale.

Tugo ::

1.) spremeniš številko v string
String1=Cstr(tvoje število)
2.) preveriš, če je v stringu vejica ( če je ni, ni decimalnih mest)
if InStr(String1, ",")
' * manjkajoči stavek 1
' * manjkajoči stavek 2
end if
3.) razdeliš string v polje dveh vrednosti
' * manjkajoči stavek 1
Pieces=Split(String1,",")
4.) dolžina polja 1, je število mest za decimalno vejico in ga recimo zapišeš v text1.text
' * manjkajoči stavek 2
Text1.text=len(Pieces(1))

Ker sem tole govoril iz glave, je možnost napake!!!

lp, T.

zupancicff ::

Lepa hvala za odgovor.
zadevo sem spravil v kup takole:
V text1 vpišem število, v textu2 pa se mi izpiše število decimalnih mest.

Private Sub Command1_Click()
String1 = CStr(Text1.Text)
If InStr(String1, ",") Then
Text2.Text = Len(String1) - InStr(String1, ",")
Else
'če ne najde vejice
Text2.Text = 0
End If
End Sub

Mogoče pride prav še komu.


LP, F

Tugo ::

Ta koda je napačna!
Tole je napačno:
Text2.Text = Len(String1) - InStr(String1, ",")


Poglej primer:
v textovnem oknu imaš število:
1234,567
Len(String1) boš dobil 8!!!
InStr pa prešteje vse vejice v stringu, kar pomeni 1!!!
Razlika je 7!!!

Če že hočeš nekaj takega, boš vseeno rabil ukaz Split, ki bo razdelil string na 2 dela... Celoštevilski del in ostanek.
Če se držim tega, da bereš iz text1.text, potem bi bila moja prejšna koda sledeča:
Private Sub Command1_Click()
String1=Cstr(text1.text)
if InStr(String1, ",") then
Pieces=Split(String1,",")
Text2.text=len(Pieces(1))
else
text2.text="0"
end if
end sub

Poglej kje si naredil napako!

lp, T.

EDIT: Pozabil sem še to, da so števila ločena s piko, tako da namesto vejice uporabi piko, ali pa pustiš tako kot imaš. Po želji.

Zgodovina sprememb…

  • spremenil: Tugo ()

darkolord ::

InStr pa prešteje vse vejice v stringu, kar pomeni 1!!!

Ne. InStr pove pozicijo vejice v stringu (5)

Tugo ::

ej, se vsem oproščam...
zupancicff ima prav! sem zamutil!
sorry še enkrat!

lp, T.

P.S.: Hvala za popravek!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene strani

Oddelek: Programiranje
212734 (2344) David1994
»

[VB] Komunikacija s serijskimi napravami

Oddelek: Programiranje
412295 (1569) mNeRo
»

VB in String

Oddelek: Programiranje
9900 (838) mov ax 0x7c0
»

Visual Basic HELP

Oddelek: Programiranje
71169 (1041) GaPe
»

API+VB

Oddelek: Programiranje
262083 (1787) webblod

Več podobnih tem