WindowsフォームでC++を使用して簡単な電卓を作成しています。一部には、画面上のラベルテキストを更新する必要があります...しかし、それはforexample ...ない:ラベルのテキストは、タイプキャストで0を追加した後にWindowsフォーム上で更新されません。C++
私は画面 334.5 に持っている私は、0ボタンをクリックして、それがラベル に更新されませんが、私は他のボタンをクリックすると、 8が、それはこの
334.508
のように更新し、私はDから型キャストだと言うことができますここ
コードの一部は、文字列およびその逆にoubleタイプ... ...
int totalLength = 0;
bool decimalPressed = false;
int decimalPart = 1;
bool isNegative = false;
void AddNewNum(double num){
if (totalLength < 12){
if (decimalPressed == false){
if (isNegative == false){
double prevDisplay = Convert::ToDouble(label1->Text);
prevDisplay = (prevDisplay * 10) + num;
label1->Text = Convert::ToString(prevDisplay);
}
else{
double prevDisplay = -1 * Convert::ToDouble(label1->Text);
prevDisplay = (prevDisplay * 10) + num;
label1->Text = Convert::ToString(-1 * prevDisplay);
}
}
else{// for adding digits in decimal part in this section error occurs .. only problem is display everything is okay
if (isNegative == false){
double prevDisplay = Convert::ToDouble(label1->Text);
if (num != 0)
prevDisplay = ((prevDisplay * (pow(10, decimalPart)) + num)/pow(10, decimalPart));
else{
prevDisplay = ((prevDisplay * (pow(10, decimalPart)))/pow(10, decimalPart));
}
label1->Text = Convert::ToString(prevDisplay);
}
else{
double prevDisplay = -1 * Convert::ToDouble(label1->Text);
prevDisplay = ((prevDisplay * (pow(10, decimalPart)) + num)/pow(10, decimalPart));
if (num != 0)
prevDisplay = ((prevDisplay * (pow(10, decimalPart)) + num)/pow(10, decimalPart));
else{
prevDisplay = ((prevDisplay * (pow(10, decimalPart)))/pow(10, decimalPart));
}
label1->Text = Convert::ToString(-1 * prevDisplay);
}
decimalPart++;
}
totalLength++;
}
else maskedTextBox1->Text = "LIMIT REACHED";
}
「decimalPart」の種類とはどのように計算されますか?完全な例を投稿してください。 – Franck
それはint型です。 –
私はこの "型キャスト"と呼ぶべきではありません。 – usr2564301