Kezdőlap › Fórumok › Programozás › Qt: Kalkulátor QLCDNumber widget-tel
- This topic has 12 hozzászólás, 3 résztvevő, and was last updated 17 years, 11 months telt el by
zoltan22.
-
SzerzőBejegyzés
-
2007-08-13-18:37 #2128292
Ott a double. Ha megnyomja a pontot, akkor te megjegyzed, hogy most jonnek a tizedesjegyek (ha az 123.0-ra a kijelzo 123-at irna ki), majd a kovetkezo szamjegyeket mint tizedesjegyeket kezeled (egy kis matekkel siman megoldhato).
2007-08-13-18:37 #2128293Ott a double. Ha megnyomja a pontot, akkor te megjegyzed, hogy most jonnek a tizedesjegyek (ha az 123.0-ra a kijelzo 123-at irna ki), majd a kovetkezo szamjegyeket mint tizedesjegyeket kezeled (egy kis matekkel siman megoldhato).
2007-08-13-19:23 #2128294Igen, de nekem a hülyebiztossággal van gondom. Mi van ha,ég1x megnyomja?
Ya, és a számok kódja:
Code:void Calculator::digitClicked()
{
Button *clickedButton = qobject_castHa azt nyomja be hogy 5 . 0 6 akkor a 6-osnál miből tudom, hogy az a 0 ami ott van, az most megtartandó vagy sem?
Mert ugye a QString::number(digitValue) mindig 5.0-t ad vissza, akár nyomott 0-t akár nem. így akkor nem fog tudni olyan tizedest beütni, amibe vezető nullák vannak.
Én is gondoltam a bool-ban tárolni a „pont nyomva” dolgot, de így ez a bajom.
Amúgy ha jól sejtem, a kijelző mindig a legmegfelelőbb verziót írja ki, azaz egész esetén egészet, double esetén tizedesponttal meg mindennel, és ezt a szám értékéből veszi ki vhogy.2007-08-13-19:23 #2128295Igen, de nekem a hülyebiztossággal van gondom. Mi van ha,ég1x megnyomja?
Ya, és a számok kódja:
Code:void Calculator::digitClicked()
{
Button *clickedButton = qobject_castHa azt nyomja be hogy 5 . 0 6 akkor a 6-osnál miből tudom, hogy az a 0 ami ott van, az most megtartandó vagy sem?
Mert ugye a QString::number(digitValue) mindig 5.0-t ad vissza, akár nyomott 0-t akár nem. így akkor nem fog tudni olyan tizedest beütni, amibe vezető nullák vannak.
Én is gondoltam a bool-ban tárolni a „pont nyomva” dolgot, de így ez a bajom.
Amúgy ha jól sejtem, a kijelző mindig a legmegfelelőbb verziót írja ki, azaz egész esetén egészet, double esetén tizedesponttal meg mindennel, és ezt a szám értékéből veszi ki vhogy.2007-08-13-20:20 #2128296Meg teszel egy privat szamolot, hogy hanyadik tizedes jegynel tartsz.
Code:class Calculator {
private:
double tizedesOszto; // ez alapbol 0void periodClicked() {
if(tizedesOszto == 0)
tizedesOszto = 1;
}
void digitClicked(){
// melyik gomb volt az, lekered az ereti erteket…
if( tizedesOszto > 0){
ertek += (double)szamjegy / tizedesOszto;
tizedesOszto /= 10;
} else {
ertek *= 10;
ertek += szamjegy;
}
}
};Igy az 5 . 0 6 -ral se kellen gond legyen. Mikor uj szamot kersz be, akkor lenullazod.
szerk. : egy bugot javitottam a kodban
2007-08-13-20:20 #2128297Meg teszel egy privat szamolot, hogy hanyadik tizedes jegynel tartsz.
Code:class Calculator {
private:
double tizedesOszto; // ez alapbol 0void periodClicked() {
if(tizedesOszto == 0)
tizedesOszto = 1;
}
void digitClicked(){
// melyik gomb volt az, lekered az ereti erteket…
if( tizedesOszto > 0){
ertek += (double)szamjegy / tizedesOszto;
tizedesOszto /= 10;
} else {
ertek *= 10;
ertek += szamjegy;
}
}
};Igy az 5 . 0 6 -ral se kellen gond legyen. Mikor uj szamot kersz be, akkor lenullazod.
szerk. : egy bugot javitottam a kodban
2007-08-14-23:30 #2128298Zoli, köszönöm szépem, ki fogom probálni.
2007-08-14-23:30 #2128299Zoli, köszönöm szépem, ki fogom probálni.
2007-08-17-13:16 #2128300zoli, a periodClicked metódusban az if után a tizedesosztónak nem 0.1 értéket kéne adni? Mert ahogy írod, úgy első körben még 1-gyel fogja osztani az új számot, amivel a display értékét növelem, és az úgy nem yó. Másik megoldás lehet esetleg a tizedesoszto /= 10 egy sorral feljebb hozása.
2007-08-17-13:16 #2128301zoli, a periodClicked metódusban az if után a tizedesosztónak nem 0.1 értéket kéne adni? Mert ahogy írod, úgy első körben még 1-gyel fogja osztani az új számot, amivel a display értékét növelem, és az úgy nem yó. Másik megoldás lehet esetleg a tizedesoszto /= 10 egy sorral feljebb hozása.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz