webForumDet fria alternativet

Tänker jag rätt (tum till mm)

.NET

3 svar · 1 003 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag försöker att bygga en liten lathund för att kunna förvandla tum till mm.
Så¨här har jag gjort

const double intTum = 25.4;
        private double helaTum = 0;
        private double delTum = 0;
        private double delarTum = 0;
        private double tum = 0;
// helaTum, delTum och delatTum hämtar sina värden ifrån textrutor.
// att det är uppdelat så här beror på t ex 1 3/8 där 
// 1 =helaTum 3 =delTum  8 delarTum 
tum = intTum ;
// jag förenklar koden  här
 double resultat = ((delarTum / tum) * delTum) + (helaTum * tum);
//sen visar jag det
i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split(',')[0]), double.Parse(i.Split(',')[1]));

Problemet är om det inte finns någon heltum utan t ex 3/8 så visas resultatet som 0,94 (alldeles galet).
Om det därimot är 1 3/8 då tycker jag att det ser bättre ut 26.34
Vore tacksam om någon förståndig kunde ge mig en vink... :OO

Medlem sedan juli 200412 913 inlägg
#2

men... 3/8 tum blir ju 0,95 cm (eller 9,53 mm)

1 3/8 ska räknas som 1+(3/8) vilket blir 11/8 eller 1,375 det kan du ju räkna ut först. Sedan 11/8 * 25,4 = 34,93 mm

eller tänker jag helt fel?

Medlem sedan aug. 20039 340 inlägg
#3

Din beräkning är helt enkelt felaktig. Du har råkat invertera (tum / delarTum). Hade det stått (tum / delarTum) * delTum hade koden funkat.
Prova:

 double resultat = (delTum / delarTum + helaTum) * tum;

delTum / delarTum + helaTum ges rätt beräkningsordning som standard, du får osynliga parenteser runt delTum / delarTum. Lägg till det heltalsdelen så får du tum uttryckt som decimaltal. 1 3/8 = 1.375. Sedan multiplicerar du med omvandlingsfaktorn.

Medlem sedan mars 20011 880 inlägg
#4

Tack nitro2k01 det var ju så jag hadde tänkt men fick inte fram det.

Avslutningsvis så skulle jag vilja be er titta på detta. Jag har en radioknapp
där jag kan välja antal decimaler. Där har jag följande:

string i = resultat.ToString();
                try
                {
                    i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split(',')[0]), double.Parse(i.Split(',')[1]));
                }
                catch
                {
                    i = string.Format("{0:N0}.{1:N0}", double.Parse(i.Split('.')[0]), double.Parse(i.Split('.')[1]));
                }
                totalt = i;

Detta är för att jag skall kunna della upp decimalerna i tusental osv t ex
1.001 209 301.
Jag är lite misstänksam mot min kod. Den verkar inte fungera excakt.
Vad tror ni? :stud

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)