C# 数学。用C把一个标签四舍五入#
我正试图用C#将输出四舍五入到2位小数。我的代码工作正常,它将我想要的内容写入标签,但它拒绝将其舍入到2位小数。有人能帮我吗?注释的math.round代码是我尝试的,没有错误。这对我不起作用C# 数学。用C把一个标签四舍五入#,c#,math,methods,C#,Math,Methods,我正试图用C#将输出四舍五入到2位小数。我的代码工作正常,它将我想要的内容写入标签,但它拒绝将其舍入到2位小数。有人能帮我吗?注释的math.round代码是我尝试的,没有错误。这对我不起作用 private void button1_Click(object sender, EventArgs e) { try { double input; double number = 0.484; double output;
private void button1_Click(object sender, EventArgs e)
{
try
{
double input;
double number = 0.484;
double output;
input = Convert.ToDouble(textBox1.Text);
output = Convert.ToDouble(input / number);
label1.Text = output.ToString();
//output = Math.Round(output, 2);
//Math.Round(output, 2);
}
catch
{
// Do nothing
将输出的预舍入值设置为标签后,对其进行舍入为时已晚。您需要先对值进行四舍五入,然后进行设置,如下所示:
label1.Text = Math.Round(output, 2).ToString();
但是,出于显示目的进行舍入并不是最好的方法:最好将值格式化为两位小数。在将输出的预舍入值设置为标签后,对其进行舍入为时已晚。您需要先对值进行四舍五入,然后进行设置,如下所示:
label1.Text = Math.Round(output, 2).ToString();
但是,出于显示目的而舍入并不是最好的方法:最好将值格式化为两位小数。您可以这样做,得到两位小数
label1.Text = string.Format("{0:N2}%", output.ToString());
你可以这样做得到2个小数
label1.Text = string.Format("{0:N2}%", output.ToString());
您应该将输出格式化为:
label1.Text = output.ToString("N2");
或者,如果您不想要CultureInfo
label1.Text = output.ToString("0.00");
您应该将输出格式化为:
label1.Text = output.ToString("N2");
或者,如果您不想要CultureInfo
label1.Text = output.ToString("0.00");
试试这个:
label1.Text = output.ToString("#.##");
更改此状态,它将正常工作。尝试此选项:
label1.Text = output.ToString("#.##");
更改此状态,它将工作正常。<代码> ToString 取一个可用于显示两个数字的格式字符串2),如果您关心实际数字中十进制数字的数目,请考虑使用<代码>十进制< /代码>过<代码>双< /代码>。3) 在对
output
进行取整之前,是否真的要将fromoutput
赋值到label1.Text
?这不能工作。1)<代码> toString 采用一个可以显示两个数字的格式字符串2)如果你关心实际数字中十进制数字的数目,考虑使用<代码>十进制< /代码>过<代码>双< /代码>。3) 在对output
进行取整之前,是否真的要将fromoutput
赋值到label1.Text
?这是行不通的。@Luaan它通常甚至可以使用double(虽然它不打印尾随的零),但通常是个坏主意。就我而言,对Math.Round(双位数)
的任何调用都是代码中的一个缺陷。根据这一点,它会起作用哦,你说得对,对于两位数的舍入,它通常会起作用。然而,这不是正确的方法。例如,Math.Round(6987987946546541.9321,2).ToString()
将返回6.98798794654654E+15
,而Math.Round(69879879465441.9321,2).ToString(“f2”)
返回6987987946546540.00
@Luaan它通常甚至可以使用双精度(尽管它不打印尾随的零),但通常是个坏主意。就我而言,对Math.Round(双位数)
的任何调用都是代码中的一个缺陷。根据这一点,它会起作用哦,你说得对,对于两位数的舍入,它通常会起作用。然而,这不是正确的方法。例如,Math.Round(6987987946546541.9321,2).ToString()
将返回6.98798794654654E+15
,而Math.Round(69879879465441.9321,2).ToString(“f2”)
返回6987987946546540.00
。