在 win32 消息框中将小数点设置为精度 2 位

Setting decimal to precision 2 places in win32 message box

我创建了我的第一个 win32 表单。我有一个错误,当小数作为输出显示在消息框中时,它会打印到大约第 10 位小数。在控制台程序中,我可以只使用 precision(2) 命令将小数位设置为 2 位,但我无法在 win32 中计算出来。这是代码:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

    if (this->comboBox1->SelectedIndex == 0 && this->radioButton1->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (b - a) * 100;


        MessageBox::Show("$" + sum);
    }

    else if (this->comboBox1->SelectedIndex == 0 && this->radioButton2->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (a-b) * 100;


        MessageBox::Show("$" + sum);
    }

    if (this->comboBox1->SelectedIndex == 1 && this->radioButton1->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (b - a) * 50;


        MessageBox::Show("$" + sum);
    }

    else if (this->comboBox1->SelectedIndex == 1 && this->radioButton2->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (a - b) * 50;

        MessageBox::Show("$" + sum);
    }

    if (this->comboBox1->SelectedIndex == 2 && this->radioButton1->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (b - a) * 50;


        MessageBox::Show("$" + sum);
    }

    else if (this->comboBox1->SelectedIndex == 2 && this->radioButton2->Checked == true) {
        double a = Convert::ToDouble(this->textBox1->Text->Trim());
        double b = Convert::ToDouble(this->textBox2->Text->Trim());

        double sum = (a - b) * 50;

        MessageBox::Show("$" + sum);
    }   


}

如果您想要特定格式的字符串转换,您需要告诉它使用哪种格式。 MSDN.

中列出了标准数字格式

为了将双精度数转换为具有两位小数的字符串,您将使用定点格式。

sum.ToString("F2")

但是,由于您那里有那个美元符号,所以您要转换的值似乎是美元。在那种情况下,我们可以做得更好,让它使用正确的货币格式。这将使用您当前文化的货币符号,或者您可以指定要使用的文化。

sum.ToString("C")