在 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")
我创建了我的第一个 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")