如何将数字四舍五入到小数点后两位?

时间:2017-01-17 00:29:33

标签: c#

当我希望它为-0.94时,我最终得到-0.944444444444444 假设输入的温度为30.3并点击华氏温度到摄氏温度。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TemperatureConverter
{
    public partial class FrmTemperature : Form
    {
        public FrmTemperature()
        {
            InitializeComponent();
        }

        private void btnCalcFahrenheit_Click(object sender, EventArgs e)
        {
            lblFahrenheit.Text = Convert.ToString(9.0/5.0 * Convert.ToDouble(txtTemperature.Text) + 32.0);
        }

        private void btnCalcCelsius_Click(object sender, EventArgs e)
        {
            lblCelsius.Text = Convert.ToString(5.0/9.0*(Convert.ToDouble(txtTemperature.Text) - 32.0));
        }
    }
}

2 个答案:

答案 0 :(得分:2)

使用以下ToString方法:

(5.0/9.0*(Convert.ToDouble(txtTemperature.Text) - 32.0)).ToString("0.00");

我还建议您将温度文本解析为单独的步骤以显示用户错误。

e.g。

double temp;
if (double.TryParse(txtTemperature.Text, out temp))
    lblCelsius.Text = (5.0/9.0*(temp - 32.0)).ToString("0.00");
else
    // Show error to user

答案 1 :(得分:1)

也许使用string.Format()或字符串插值(C#6.0中的新功能)。

使用string.Format()

private void btnCalcFahrenheit_Click(object sender, EventArgs e)
{
    var fahrenheit = 9.0/5.0 * Convert.ToDouble(txtTemperature.Text) + 32.0;
    lblFahrenheit.Text = string.Format("{0:N0}", fahrenheit);
}
private void btnCalcCelsius_Click(object sender, EventArgs e)
{
    var celsius = 5.0/9.0*(Convert.ToDouble(txtTemperature.Text) - 32.0);
    lblCelsius.Text = string.Format("{0:N0}", celsius);
}

使用字符串插值:

private void btnCalcFahrenheit_Click(object sender, EventArgs e)
{
    var fahrenheit = 9.0/5.0 * Convert.ToDouble(txtTemperature.Text) + 32.0;
    lblFahrenheit.Text = $"{fahrenheit:N2}";
}
private void btnCalcCelsius_Click(object sender, EventArgs e)
{
    var celsius = 5.0/9.0*(Convert.ToDouble(txtTemperature.Text) - 32.0);
    lblCelsius.Text = $"{celsius:N2}";
}

请注意,格式化程序“N2”将使用您选择的区域设置的基数和分隔符来格式化数字。对于US-EN,那将是“。”对于基数和“,”用于分隔符。例如,1295.422度将被格式化为1,295.42。