Decimal begränsning - VB
Finns det någon där ute som har något smart tips på decimal begränsning.
Håller på med ett projekt där antalet pixlar skall räknas ut från angivelser
i dpi och cm. Det ända som återstår är nu att slippa alla decimaler.
Svara
Sv: Decimal begränsning - VB
Pixlar och Dpi har inga decimaler. Vid division får du alltid ett tal som underförstått
innehåller decimaler. Du kan visa svar i cm med Format$(uträkning,"0.0")
Men!!! det är inte den lösning/svar du förväntar dig ! Se Spel o Grafik.
Svara
Sv: Decimal begränsning - VB
Det jag vill är att läsa av pixlarna utan decimaler. som det är nu så delar jag cm med dpi och får då fram ett tal liknande 000,00000000 vill bara ha 000 utan ,00000000.
Svara
Sv: Decimal begränsning - VB
talet = Round(cm / dpi,0)
eller heltalsdivision
talet = cm \ dpi
/Johan
Svara
Sv: Decimal begränsning - VB
>Varför skulle man vilja göra om resultat till en sträng ?
Konstig fråga !
Om man vill visa ett resultat från en beräkning så gör man det med en sträng.
Dvs Dim Resultat As String. Du tillhör väl dom som använder Variant i alla läge.
Det är en styggelse och är ett av de stora missförhållande som Vb tillåter . Usch :-)
Du rekommenderade ju Round härovan. Round returnerar en Sträng.
Svara
Sv: Decimal begränsning - VB
Om man som Alex "Håller på med ett projekt där antalet pixlar skall räknas ut från angivelser i dpi och cm." är det väl inte troligt att man vill visa resultatet som en sträng ? Det troliga är väl att man vill göra fortsatta beräkningar med delresultatet ?
Round returnerar inte en sträng i VB.
Saxat ur MSDN som följer med vid installation
VB 6 :
Returns a number rounded to a specified number of decimal places.
VB.NET 2002 :
Returns a Double value containing the number nearest the specified value.
Slutligen, påhoppet om variant är helt utan grund och generaliseringar av det slaget behöver du inte ge uttryck för här.
/Johan
Svara
Sv: Decimal begränsning - VB
Woops !!! :-)
<VB 6 : Returns a number rounded to a specified number of decimal places.
Och! vad är det för DataTyp.? Tycker fortfarande att alla "Variantnissar" skall gå en kurs :-)
Finns väl ingen definierad DataTyp som heter "number" Eller ?
Man kan läsa MSDN som fa... läser bibeln. Läs på DataTyp så får du respekt.
Svara
Sv: Decimal begränsning - VB
å andra sidan tolkar jag number i citatet som "den siffertyp du skickade in" , men jag har ju å andra sidan inte originaltexterna här...
/Emma
Svara
Sv: Decimal begränsning - VB
"Variantnissen" här borta kan bara konstatera att nedanstående anrop returnerar en ruta där det står double.
Men man är väl i princip överkörd igen...
<code>
MsgBox TypeName(Round(4/5,0))
</code>
Ett svar på hur man ska lösa det om man nu inte vill ha svaret som en sträng vore ju lämpligt, eller ?
/Johan
Svara
Sv: Decimal begränsning - VB
Angående Variants så var jag lika fientlig till dessa som Sven.
Detta på grund av c-bakgrund och en viss förtvivlan över den dåliga typkontrollen i c (som samtidigt är en av dess fördelar vid t.ex. hårdvarunära programmering med pekare hit och dit och hopp fram och tillbaka mellan assembler och c).
Jag trycker också i mina studenter som jag har emellanåt att det är en styggelse med variants.
MEN.....
En skola för programmering som jag stött på (minns inte namnet nu) bygger helt på variants och efter en del föreläsande av dess förespråkare måste jag medge att den har sitt berättigande i vissa speciella fall.
En viktig regel anser jag dock är: ANTINGEN Variants till allt och bara i speciella fall ELLER inga j-vla variants överhuvud taget. Blanda inte !!!
------
Det ser mycket bättre ut att skriva Object (som ju är nästan samma sak i VB6) ;-)
Då slipper man dessutom att kallas Variantnisse.
:)
Svara
Sv: Decimal begränsning - VB
Ja, om man nu varit en sån där nisse, men jag använder aldrig variants !
Alex, är du snäll och klarmarkera den här tråden ?
/Johan
Svara
Sv: Decimal begränsning - VB
>Alex, är du snäll och klarmarkera den här tråden ?
Varför Varför skall han göra det ?
Märkliga översittarefasoner som talar om för andra när dom skall stänga sina trådar.
Är du likadan på ditt jobb så bevare dom för dessa översittarfasoner !!!
"Give the man enough rope , and he hang him self"
Svara
Sv: Decimal begränsning - VB
Ja ni... Jag har inte tagit del av er långrandiga diskution under de senaste 8 inläggen. Men kör på en egen teori enligt nedan:
Dim a As Integer
Dim b As Integer
a = CInt(txtDpiCm.Text) / "2,54"
lblPixW.Caption = CInt(txtCmW.Text) * a
b = CInt(txtDpiCm.Text) / "2,54"
lblPixH.Caption = CInt(txtCmH.Text) * b
Om det finns någon invändning så kan ni ju beskriva den lite mer detaljerat än åvan...
Annars skall ni ha tack ändå för de tankegångar som fick mig att komma fram till denna lösning...
/Alex
Svara
Sv: Decimal begränsning - VB
Emma har rätt.
Round returnerar den datatyp man skickade in, vilket framgår av följande:
<CODE>
msgbox typename(round(12.0))
msgbox typename(round(12))
msgbox typename(round(cbyte(12)))
</CODE>
/PK
Svara
Sv: Decimal begränsning - VB
Jag skalll forska lite i det här med round och se hur jag skall tillämpad et i programmet. Formuläret har en Textruta för DPI, och en Textruta för Cm. Sedan skall Pixelantalet framträda i en Label. Om det bara är att skriva som i exemplet ovan så borde problemet vara löst...
/Alex
Svara