当我希望它为-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));
}
}
}
答案 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。