Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数学。用C把一个标签四舍五入#_C#_Math_Methods - Fatal编程技术网

C# 数学。用C把一个标签四舍五入#

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;

我正试图用C#将输出四舍五入到2位小数。我的代码工作正常,它将我想要的内容写入标签,但它拒绝将其舍入到2位小数。有人能帮我吗?注释的math.round代码是我尝试的,没有错误。这对我不起作用

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
进行取整之前,是否真的要将from
output
赋值到
label1.Text
?这不能工作。1)<代码> toString 采用一个可以显示两个数字的格式字符串2)如果你关心实际数字中十进制数字的数目,考虑使用<代码>十进制< /代码>过<代码>双< /代码>。3) 在对
output
进行取整之前,是否真的要将from
output
赋值到
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